In this document, I explore 4 approaches to SVD with Dimkid data:
- No mean-centering, characters as rows and capacities as columns
- No mean-centering, capacities as rows and characters as columns
- Mean-centering by capacity, characters as rows and capacities as columns (the classic approach)
- Mean-centering by character, capacities as rows and characters as columns
Approach #1
In Approach #1 we proceed without mean-centering, with characters as rows and capacities as columns.
Raw data matrix visualizations
Adults
In this study, 431 US adults rated 21 characters (between-subjects) on 40 capacities (within-subjects). (See Weisman, Dweck, & Markman, 2017, PNAS, Study 4.)

7-9yo children
In this study, 123 7- to 9-year-old US children rated 9 characters (between-subjects) on 20 capacities (within subjects). (See Weisman, Dweck, & Markman, 2018, Proc. CogSci.)

4-6yo children
In this study, 124 4- to 6-year-old US children rated 9 characters (between-subjects) on 20 capacities (within subjects). (See Weisman, Dweck, & Markman, 2018, Proc. CogSci.)

SVD
Adults
Reconstructed data

Feature vectors

Singular values

Item vectors

Plotting in dimensions
Joining, by = "item"
Column `item` joining factor and character vector, coercing into character vector

Joining, by = "item"
Column `item` joining factor and character vector, coercing into character vector

Joining, by = "item"
Column `item` joining factor and character vector, coercing into character vector




Children, 7-9y
Reconstructed data

Feature vectors

Singular values

Item vectors

Plotting in dimensions
Joining, by = "item"
Column `item` joining factor and character vector, coercing into character vector

Joining, by = "item"
Column `item` joining factor and character vector, coercing into character vector

Joining, by = "item"
Column `item` joining factor and character vector, coercing into character vector




Children, 4-6y
Reconstructed data

Feature vectors

Singular values

Item vectors

Plotting in dimensions
Joining, by = "item"
Column `item` joining factor and character vector, coercing into character vector

Joining, by = "item"
Column `item` joining factor and character vector, coercing into character vector

Joining, by = "item"
Column `item` joining factor and character vector, coercing into character vector




Children, 4-9y
Reconstructed data

Feature vectors

Singular values

Item vectors

Plotting in dimensions
Joining, by = "item"
Column `item` joining factor and character vector, coercing into character vector

Joining, by = "item"
Column `item` joining factor and character vector, coercing into character vector

Joining, by = "item"
Column `item` joining factor and character vector, coercing into character vector

Ignoring unknown aesthetics: x, y, label

Ignoring unknown aesthetics: x, y, label

Ignoring unknown aesthetics: x, y, label

Approach #2
In Approach #2 we proceed without mean-centering, with capacities as rows and characters as columns.
Raw data matrix visualizations
Adults
In this study, 431 US adults rated 21 characters (between-subjects) on 40 capacities (within-subjects). (See Weisman, Dweck, & Markman, 2017, PNAS, Study 4.)

7-9yo children
In this study, 123 7- to 9-year-old US children rated 9 characters (between-subjects) on 20 capacities (within subjects). (See Weisman, Dweck, & Markman, 2018, Proc. CogSci.)

4-6yo children
In this study, 124 4- to 6-year-old US children rated 9 characters (between-subjects) on 20 capacities (within subjects). (See Weisman, Dweck, & Markman, 2018, Proc. CogSci.)

SVD
Adults
Reconstructed data

Feature vectors

Singular values

Item vectors

Plotting in dimensions



Joining, by = "property"
Column `property` joining factor and character vector, coercing into character vector

Joining, by = "property"
Column `property` joining factor and character vector, coercing into character vector

Joining, by = "property"
Column `property` joining factor and character vector, coercing into character vector

Children, 7-9y
Reconstructed data

Feature vectors

Singular values

Item vectors

Plotting in dimensions



Joining, by = "property"
Column `property` joining factor and character vector, coercing into character vector

Joining, by = "property"
Column `property` joining factor and character vector, coercing into character vector

Joining, by = "property"
Column `property` joining factor and character vector, coercing into character vector

Children, 4-6y
Reconstructed data

Feature vectors

Singular values

Item vectors

Plotting in dimensions



Joining, by = "property"
Column `property` joining factor and character vector, coercing into character vector

Joining, by = "property"
Column `property` joining factor and character vector, coercing into character vector

Joining, by = "property"
Column `property` joining factor and character vector, coercing into character vector

Children, 4-9y
Reconstructed data

Feature vectors

Singular values

Item vectors

Plotting in dimensions
Ignoring unknown aesthetics: x, y, label

Ignoring unknown aesthetics: x, y, label

Ignoring unknown aesthetics: x, y, label

Joining, by = "property"
Column `property` joining factor and character vector, coercing into character vector

Joining, by = "property"
Column `property` joining factor and character vector, coercing into character vector

Joining, by = "property"
Column `property` joining factor and character vector, coercing into character vector

Approach #3
In Approach #3 we mean-center by capacity, with characters as rows and capacities as columns.
Raw data matrix visualizations
Adults
In this study, 431 US adults rated 21 characters (between-subjects) on 40 capacities (within-subjects). (See Weisman, Dweck, & Markman, 2017, PNAS, Study 4.)

7-9yo children
In this study, 123 7- to 9-year-old US children rated 9 characters (between-subjects) on 20 capacities (within subjects). (See Weisman, Dweck, & Markman, 2018, Proc. CogSci.)

4-6yo children
In this study, 124 4- to 6-year-old US children rated 9 characters (between-subjects) on 20 capacities (within subjects). (See Weisman, Dweck, & Markman, 2018, Proc. CogSci.)

SVD
Adults
Reconstructed data

Feature vectors

Singular values

Item vectors

Plotting in dimensions
Joining, by = "item"
Column `item` joining factor and character vector, coercing into character vector

Joining, by = "item"
Column `item` joining factor and character vector, coercing into character vector

Joining, by = "item"
Column `item` joining factor and character vector, coercing into character vector




Children, 7-9y
Reconstructed data

Feature vectors

Singular values

Item vectors

Plotting in dimensions
Joining, by = "item"
Column `item` joining factor and character vector, coercing into character vector

Joining, by = "item"
Column `item` joining factor and character vector, coercing into character vector

Joining, by = "item"
Column `item` joining factor and character vector, coercing into character vector




Children, 4-6y
Reconstructed data

Feature vectors

Singular values

Item vectors

Plotting in dimensions
Joining, by = "item"
Column `item` joining factor and character vector, coercing into character vector

Joining, by = "item"
Column `item` joining factor and character vector, coercing into character vector

Joining, by = "item"
Column `item` joining factor and character vector, coercing into character vector




Children, 4-9y
Reconstructed data

Feature vectors

Singular values

Item vectors

Plotting in dimensions
Joining, by = "item"
Column `item` joining factor and character vector, coercing into character vector

Joining, by = "item"
Column `item` joining factor and character vector, coercing into character vector

Joining, by = "item"
Column `item` joining factor and character vector, coercing into character vector

Ignoring unknown aesthetics: x, y, label

Ignoring unknown aesthetics: x, y, label

Ignoring unknown aesthetics: x, y, label

Approach #4
In Approach #4 we mean-center by character, with capacities as rows and characters as columns.
Raw data matrix visualizations
Adults
In this study, 431 US adults rated 21 characters (between-subjects) on 40 capacities (within-subjects). (See Weisman, Dweck, & Markman, 2017, PNAS, Study 4.)

7-9yo children
In this study, 123 7- to 9-year-old US children rated 9 characters (between-subjects) on 20 capacities (within subjects). (See Weisman, Dweck, & Markman, 2018, Proc. CogSci.)

4-6yo children
In this study, 124 4- to 6-year-old US children rated 9 characters (between-subjects) on 20 capacities (within subjects). (See Weisman, Dweck, & Markman, 2018, Proc. CogSci.)

SVD
Adults
Reconstructed data

Feature vectors

Singular values

Item vectors

Plotting in dimensions



Joining, by = "property"
Column `property` joining factor and character vector, coercing into character vector

Joining, by = "property"
Column `property` joining factor and character vector, coercing into character vector

Joining, by = "property"
Column `property` joining factor and character vector, coercing into character vector

Children, 7-9y
Reconstructed data

Feature vectors

Singular values

Item vectors

Plotting in dimensions



Joining, by = "property"
Column `property` joining factor and character vector, coercing into character vector

Joining, by = "property"
Column `property` joining factor and character vector, coercing into character vector

Joining, by = "property"
Column `property` joining factor and character vector, coercing into character vector

Children, 4-6y
Reconstructed data

Feature vectors

Singular values

Item vectors

Plotting in dimensions



Joining, by = "property"
Column `property` joining factor and character vector, coercing into character vector

Joining, by = "property"
Column `property` joining factor and character vector, coercing into character vector

Joining, by = "property"
Column `property` joining factor and character vector, coercing into character vector

Children, 4-9y
Reconstructed data

Feature vectors

Singular values

Item vectors

Plotting in dimensions
Ignoring unknown aesthetics: x, y, label

Ignoring unknown aesthetics: x, y, label

Ignoring unknown aesthetics: x, y, label

Joining, by = "property"
Column `property` joining factor and character vector, coercing into character vector

Joining, by = "property"
Column `property` joining factor and character vector, coercing into character vector

Joining, by = "property"
Column `property` joining factor and character vector, coercing into character vector

LS0tCnRpdGxlOiAiRGlta2lkOiBTaW5ndWxhciBWYWx1ZSBEZWNvbXBvc2l0aW9uIChTVkQpIgpvdXRwdXQ6CiAgaHRtbF9ub3RlYm9vazoKICAgIHRvYzogdHJ1ZQogICAgdG9jX2Zsb2F0OiB0cnVlCiAgICB0b2NfZGVwdGg6IDMKLS0tCgpgYGB7ciwgaW5jbHVkZSA9IEZ9CmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvID0gRkFMU0UsIG1lc3NhZ2UgPSBGQUxTRSkKYGBgCgpgYGB7ciBzZXR1cCwgaW5jbHVkZSA9IEZ9CmxpYnJhcnkodGlkeXZlcnNlKQpsaWJyYXJ5KHJtcykKbGlicmFyeShwc3ljaCkKYGBgCgpgYGB7ciBkYXRhLCBpbmNsdWRlID0gRn0Kc291cmNlKCJzY3JpcHRzL2ltcG9ydF9kYXRhLlIiKQpgYGAKYGBge3IgZnVuY3Rpb25zLCBpbmNsdWRlID0gRn0Kc291cmNlKCJzY3JpcHRzL21ha2VfZnVuY3Rpb25zX2NvbWIuUiIpCnNvdXJjZSgic2NyaXB0cy9kb19lZmEuUiIpCmBgYAoKSW4gdGhpcyBkb2N1bWVudCwgSSBleHBsb3JlIDQgYXBwcm9hY2hlcyB0byBTVkQgd2l0aCBEaW1raWQgZGF0YToKCjEuIE5vIG1lYW4tY2VudGVyaW5nLCBjaGFyYWN0ZXJzIGFzIHJvd3MgYW5kIGNhcGFjaXRpZXMgYXMgY29sdW1ucwoyLiBObyBtZWFuLWNlbnRlcmluZywgY2FwYWNpdGllcyBhcyByb3dzIGFuZCBjaGFyYWN0ZXJzIGFzIGNvbHVtbnMKMy4gTWVhbi1jZW50ZXJpbmcgYnkgY2FwYWNpdHksIGNoYXJhY3RlcnMgYXMgcm93cyBhbmQgY2FwYWNpdGllcyBhcyBjb2x1bW5zICh0aGUgY2xhc3NpYyBhcHByb2FjaCkKNC4gTWVhbi1jZW50ZXJpbmcgYnkgY2hhcmFjdGVyLCBjYXBhY2l0aWVzIGFzIHJvd3MgYW5kIGNoYXJhY3RlcnMgYXMgY29sdW1ucwoKCiMgQXBwcm9hY2ggIzEKCkluIEFwcHJvYWNoICMxIHdlIHByb2NlZWQgd2l0aG91dCBtZWFuLWNlbnRlcmluZywgd2l0aCBjaGFyYWN0ZXJzIGFzIHJvd3MgYW5kIGNhcGFjaXRpZXMgYXMgY29sdW1ucy4KCiMjIFJhdyBkYXRhIG1hdHJpeCB2aXN1YWxpemF0aW9ucyB7LnRhYnNldH0KCiMjIyBBZHVsdHMKCkluIHRoaXMgc3R1ZHksIDQzMSBVUyBhZHVsdHMgcmF0ZWQgMjEgY2hhcmFjdGVycyAoYmV0d2Vlbi1zdWJqZWN0cykgb24gNDAgY2FwYWNpdGllcyAod2l0aGluLXN1YmplY3RzKS4gKFNlZSBXZWlzbWFuLCBEd2VjaywgJiBNYXJrbWFuLCAyMDE3LCBfUE5BU18sIFN0dWR5IDQuKQoKYGBge3IsIGZpZy53aWR0aCA9IDQsIGZpZy5hc3AgPSAwLjY3fQpkX2FkICU+JQogIGdhdGhlcihjYXBhY2l0eSwgbWVhbl9yYXRpbmcsIC1jaGFyYWN0ZXIpICU+JQogIGdncGxvdChhZXMoeCA9IGNhcGFjaXR5LCB5ID0gY2hhcmFjdGVyLCBmaWxsID0gbWVhbl9yYXRpbmcpKSArCiAgZ2VvbV90aWxlKGNvbG9yID0gImJsYWNrIikgKwogIHNjYWxlX2ZpbGxfZ3JhZGllbnQobG93ID0gImJsYWNrIiwgaGlnaCA9ICJ3aGl0ZSIsICMgbGltaXRzID0gYygtMywgMyksCiAgICAgICAgICAgICAgICAgICAgICBndWlkZSA9IGd1aWRlX2NvbG9yYmFyKGJhcmhlaWdodCA9IDE1KSkgKwogIHRoZW1lX21pbmltYWwoKSArCiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA5MCwgaGp1c3QgPSAxLCB2anVzdCA9IDAuNSkpICsKICBsYWJzKHRpdGxlID0gIlJhdyBkYXRhOiBBZHVsdHMiLAogICAgICAgc3VidGl0bGUgPSAiMjEgY2hhcmFjdGVycywgNDAgY2FwYWNpdGllcyIsCiAgICAgICB4ID0gIkNhcGFjaXR5IiwKICAgICAgIHkgPSAiQ2hhcmFjdGVyIiwKICAgICAgIGZpbGwgPSAiTWVhbiByYXRpbmciKQpgYGAKCiMjIyA3LTl5byBjaGlsZHJlbgoKSW4gdGhpcyBzdHVkeSwgMTIzIDctIHRvIDkteWVhci1vbGQgVVMgY2hpbGRyZW4gcmF0ZWQgOSBjaGFyYWN0ZXJzIChiZXR3ZWVuLXN1YmplY3RzKSBvbiAyMCBjYXBhY2l0aWVzICh3aXRoaW4gc3ViamVjdHMpLiAoU2VlIFdlaXNtYW4sIER3ZWNrLCAmIE1hcmttYW4sIDIwMTgsIF9Qcm9jLiBDb2dTY2lfLikKCmBgYHtyLCBmaWcud2lkdGggPSA0LCBmaWcuYXNwID0gMC42N30KZF83OSAlPiUKICBnYXRoZXIoY2FwYWNpdHksIG1lYW5fcmF0aW5nLCAtY2hhcmFjdGVyKSAlPiUKICBnZ3Bsb3QoYWVzKHggPSBjYXBhY2l0eSwgeSA9IGNoYXJhY3RlciwgZmlsbCA9IG1lYW5fcmF0aW5nKSkgKwogIGdlb21fdGlsZShjb2xvciA9ICJibGFjayIpICsKICBzY2FsZV9maWxsX2dyYWRpZW50KGxvdyA9ICJibGFjayIsIGhpZ2ggPSAid2hpdGUiLCAjIGxpbWl0cyA9IGMoMCwgMSksCiAgICAgICAgICAgICAgICAgICAgICBndWlkZSA9IGd1aWRlX2NvbG9yYmFyKGJhcmhlaWdodCA9IDE1KSkgKwogIHRoZW1lX21pbmltYWwoKSArCiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA5MCwgaGp1c3QgPSAxLCB2anVzdCA9IDAuNSkpICsKICBsYWJzKHRpdGxlID0gIlJhdyBkYXRhOiA3LSB0byA5LXllYXItb2xkIGNoaWxkcmVuIiwKICAgICAgIHN1YnRpdGxlID0gIjkgY2hhcmFjdGVycywgMjAgY2FwYWNpdGllcyIsCiAgICAgICB4ID0gIkNhcGFjaXR5IiwKICAgICAgIHkgPSAiQ2hhcmFjdGVyIiwKICAgICAgIGZpbGwgPSAiTWVhbiByYXRpbmciKQpgYGAKCiMjIyA0LTZ5byBjaGlsZHJlbgoKSW4gdGhpcyBzdHVkeSwgMTI0IDQtIHRvIDYteWVhci1vbGQgVVMgY2hpbGRyZW4gcmF0ZWQgOSBjaGFyYWN0ZXJzIChiZXR3ZWVuLXN1YmplY3RzKSBvbiAyMCBjYXBhY2l0aWVzICh3aXRoaW4gc3ViamVjdHMpLiAoU2VlIFdlaXNtYW4sIER3ZWNrLCAmIE1hcmttYW4sIDIwMTgsIF9Qcm9jLiBDb2dTY2lfLikKCmBgYHtyLCBmaWcud2lkdGggPSA0LCBmaWcuYXNwID0gMC42N30KZF80NiAlPiUKICBnYXRoZXIoY2FwYWNpdHksIG1lYW5fcmF0aW5nLCAtY2hhcmFjdGVyKSAlPiUKICBnZ3Bsb3QoYWVzKHggPSBjYXBhY2l0eSwgeSA9IGNoYXJhY3RlciwgZmlsbCA9IG1lYW5fcmF0aW5nKSkgKwogIGdlb21fdGlsZShjb2xvciA9ICJibGFjayIpICsKICBzY2FsZV9maWxsX2dyYWRpZW50KGxvdyA9ICJibGFjayIsIGhpZ2ggPSAid2hpdGUiLCAjIGxpbWl0cyA9IGMoMCwgMSksCiAgICAgICAgICAgICAgICAgICAgICBndWlkZSA9IGd1aWRlX2NvbG9yYmFyKGJhcmhlaWdodCA9IDE1KSkgKwogIHRoZW1lX21pbmltYWwoKSArCiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA5MCwgaGp1c3QgPSAxLCB2anVzdCA9IDAuNSkpICsKICBsYWJzKHRpdGxlID0gIlJhdyBkYXRhOiA0LSB0byA2LXllYXItb2xkIGNoaWxkcmVuIiwKICAgICAgIHN1YnRpdGxlID0gIjkgY2hhcmFjdGVycywgMjAgY2FwYWNpdGllcyIsCiAgICAgICB4ID0gIkNhcGFjaXR5IiwKICAgICAgIHkgPSAiQ2hhcmFjdGVyIiwKICAgICAgIGZpbGwgPSAiTWVhbiByYXRpbmciKQpgYGAKCgoKIyMgU1ZEIHsudGFic2V0fQoKIyMjIEFkdWx0cwoKYGBge3J9CnN2ZDFfYWQgPC0gc3ZkKGRfYWQgJT4lIGNvbHVtbl90b19yb3duYW1lcygiY2hhcmFjdGVyIiksIAogICAgICAgICAgICAgICBucm93KGRfYWQpLCBucm93KGRfYWQpKQpgYGAKCiMjIyMgUmVjb25zdHJ1Y3RlZCBkYXRhCgpgYGB7ciwgZmlnLndpZHRoID0gNCwgZmlnLmFzcCA9IDAuNjd9CnBsb3RfcmVjb25zdHJ1Y3RfZnVuKHN2ZDFfYWQsIHRyYW5zcG9zZSA9IEZBTFNFLCAiYWR1bHRzIikgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBBZHVsdHMgKEFwcHJvYWNoICMxKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJSZWNvbnN0cnVjdGVkIGRhdGFzZXQ6IFN1bSBvZiBvdXRlciBwcm9kdWN0cyAoVSwgVikgbXVsdGlwbGllZCBieSBTIiwKICAgICAgIHggPSAiIiwgeSA9ICIiKQpgYGAKCiMjIyMgRmVhdHVyZSB2ZWN0b3JzCgpgYGB7ciwgZmlnLndpZHRoID0gMywgZmlnLmFzcCA9IDF9CnBsb3RfVV9mdW4oc3ZkMV9hZCwgImFkdWx0cyIsIHRyYW5zcG9zZSA9IEZBTFNFLCBtdWx0aXBseSA9IEZBTFNFKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IEFkdWx0cyAoQXBwcm9hY2ggIzEpIiwKICAgICAgIHN1YnRpdGxlID0gIlU6IEZlYXR1cmUgdmVjdG9ycyAoYnkgbW9kZSkiLAogICAgICAgIyBzdWJ0aXRsZSA9ICJVIHggUzogRmVhdHVyZSB2ZWN0b3JzIG11bHRpcGxpZWQgYnkgc2luZ3VsYXIgdmFsdWUgKGJ5IG1vZGUpIiwKICAgICAgIHggPSAiIiwgeSA9ICIiKQpgYGAKCiMjIyMgU2luZ3VsYXIgdmFsdWVzCgpgYGB7ciwgZmlnLndpZHRoID0gMywgZmlnLmFzcCA9IDF9CnBsb3RfU19mdW4oc3ZkMV9hZCkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBBZHVsdHMgKEFwcHJvYWNoICMxKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJTOiBTaW5ndWxhciB2YWx1ZXMgKGJ5IG1vZGUpIiwKICAgICAgIHggPSAiIiwgeSA9ICIiKQpgYGAKCiMjIyMgSXRlbSB2ZWN0b3JzCgpgYGB7ciwgZmlnLndpZHRoID0gMywgZmlnLmFzcCA9IDEuNDl9CnBsb3RfVl9mdW4oc3ZkMV9hZCwgImFkdWx0cyIsIHRyYW5zcG9zZSA9IEZBTFNFLCBtdWx0aXBseSA9IEZBTFNFKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IEFkdWx0cyAoQXBwcm9hY2ggIzEpIiwKICAgICAgIHN1YnRpdGxlID0gIlY6IEl0ZW0gdmVjdG9ycyAoYnkgbW9kZSkiLAogICAgICAgIyBzdWJ0aXRsZSA9ICJWIHggUzogSXRlbSB2ZWN0b3JzIG11bHRpcGxpZWQgYnkgc2luZ3VsYXIgdmFsdWUgKGJ5IG1vZGUpIiwKICAgICAgIHggPSAiIiwgeSA9ICIiKQpgYGAKCiMjIyMgUGxvdHRpbmcgaW4gZGltZW5zaW9ucwoKYGBge3IsIGZpZy53aWR0aCA9IDQsIGZpZy5hc3AgPSAxfQpwbG90X1ZfZnVuX2l0ZW0oc3ZkMV9hZCwgImFkdWx0cyIsIGVmYV9jb2xvcnMgPSBUUlVFLCAKICAgICAgICAgICAgICAgIG1vZGVzID0gYygibW9kZV8wMSIsICJtb2RlXzAyIikpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQWR1bHRzIChBcHByb2FjaCAjMSkiLAogICAgICAgc3VidGl0bGUgPSAiVjogQ2FwYWNpdGllcyBpbiBNb2RlcyAxICYgMiIsCiAgICAgICB4ID0gIk1vZGUgMSIsIHkgPSAiTW9kZSAyIikKCnBsb3RfVl9mdW5faXRlbShzdmQxX2FkLCAiYWR1bHRzIiwgZWZhX2NvbG9ycyA9IFRSVUUsCiAgICAgICAgICAgICAgICBtb2RlcyA9IGMoIm1vZGVfMDEiLCAibW9kZV8wMyIpKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IEFkdWx0cyAoQXBwcm9hY2ggIzEpIiwKICAgICAgIHN1YnRpdGxlID0gIlY6IENhcGFjaXRpZXMgaW4gTW9kZXMgMSAmIDMiLAogICAgICAgeCA9ICJNb2RlIDEiLCB5ID0gIk1vZGUgMyIpCgpwbG90X1ZfZnVuX2l0ZW0oc3ZkMV9hZCwgImFkdWx0cyIsIGVmYV9jb2xvcnMgPSBUUlVFLCAKICAgICAgICAgICAgICAgIG1vZGVzID0gYygibW9kZV8wMiIsICJtb2RlXzAzIikpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQWR1bHRzIChBcHByb2FjaCAjMSkiLAogICAgICAgc3VidGl0bGUgPSAiVjogQ2FwYWNpdGllcyBpbiBNb2RlcyAyICYgMyIsCiAgICAgICB4ID0gIk1vZGUgMiIsIHkgPSAiTW9kZSAzIikKYGBgCgpgYGB7ciwgZmlnLndpZHRoID0gNCwgZmlnLmFzcCA9IDF9CnBsb3RfVV9mdW5fcHJvcChzdmQxX2FkLCAiYWR1bHRzIiwgIAogICAgICAgICAgICAgICAgbW9kZXMgPSBjKCJtb2RlXzAxIiwgIm1vZGVfMDIiKSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBBZHVsdHMgKEFwcHJvYWNoICMxKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJVOiBDaGFyYWN0ZXJzIGluIE1vZGVzIDEgJiAyIiwKICAgICAgIHggPSAiTW9kZSAxIiwgeSA9ICJNb2RlIDIiKQoKcGxvdF9VX2Z1bl9wcm9wKHN2ZDFfYWQsICJhZHVsdHMiLAogICAgICAgICAgICAgICAgbW9kZXMgPSBjKCJtb2RlXzAxIiwgIm1vZGVfMDMiKSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBBZHVsdHMgKEFwcHJvYWNoICMxKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJVOiBDaGFyYWN0ZXJzIGluIE1vZGVzIDEgJiAzIiwKICAgICAgIHggPSAiTW9kZSAxIiwgeSA9ICJNb2RlIDMiKQoKcGxvdF9VX2Z1bl9wcm9wKHN2ZDFfYWQsICJhZHVsdHMiLCAKICAgICAgICAgICAgICAgIG1vZGVzID0gYygibW9kZV8wMiIsICJtb2RlXzAzIikpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQWR1bHRzIChBcHByb2FjaCAjMSkiLAogICAgICAgc3VidGl0bGUgPSAiVTogQ2hhcmFjdGVycyBpbiBNb2RlcyAyICYgMyIsCiAgICAgICB4ID0gIk1vZGUgMiIsIHkgPSAiTW9kZSAzIikKYGBgCgoKIyMjIENoaWxkcmVuLCA3LTl5CgpgYGB7cn0Kc3ZkMV83OSA8LSBzdmQoZF83OSAlPiUgY29sdW1uX3RvX3Jvd25hbWVzKCJjaGFyYWN0ZXIiKSwgCiAgICAgICAgICAgICAgIG5yb3coZF83OSksIG5yb3coZF83OSkpCmBgYAoKIyMjIyBSZWNvbnN0cnVjdGVkIGRhdGEKCmBgYHtyLCBmaWcud2lkdGggPSA0LCBmaWcuYXNwID0gMC42N30KcGxvdF9yZWNvbnN0cnVjdF9mdW4oc3ZkMV83OSwgdHJhbnNwb3NlID0gRkFMU0UsICJjaGlsZHJlbiIpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQ2hpbGRyZW4sIDctOXkgKEFwcHJvYWNoICMxKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJSZWNvbnN0cnVjdGVkIGRhdGFzZXQ6IFN1bSBvZiBvdXRlciBwcm9kdWN0cyAoVSwgVikgbXVsdGlwbGllZCBieSBTIiwKICAgICAgIHggPSAiIiwgeSA9ICIiKQpgYGAKCiMjIyMgRmVhdHVyZSB2ZWN0b3JzCgpgYGB7ciwgZmlnLndpZHRoID0gMywgZmlnLmFzcCA9IDF9CnBsb3RfVV9mdW4oc3ZkMV83OSwgImNoaWxkcmVuIiwgdHJhbnNwb3NlID0gRkFMU0UsIG11bHRpcGx5ID0gRkFMU0UpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQ2hpbGRyZW4sIDctOXkgKEFwcHJvYWNoICMxKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJVOiBGZWF0dXJlIHZlY3RvcnMgKGJ5IG1vZGUpIiwKICAgICAgICMgc3VidGl0bGUgPSAiVSB4IFM6IEZlYXR1cmUgdmVjdG9ycyBtdWx0aXBsaWVkIGJ5IHNpbmd1bGFyIHZhbHVlIChieSBtb2RlKSIsCiAgICAgICB4ID0gIiIsIHkgPSAiIikKYGBgCgojIyMjIFNpbmd1bGFyIHZhbHVlcwoKYGBge3IsIGZpZy53aWR0aCA9IDMsIGZpZy5hc3AgPSAxfQpwbG90X1NfZnVuKHN2ZDFfNzkpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQ2hpbGRyZW4sIDctOXkgKEFwcHJvYWNoICMxKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJTOiBTaW5ndWxhciB2YWx1ZXMgKGJ5IG1vZGUpIiwKICAgICAgIHggPSAiIiwgeSA9ICIiKQpgYGAKCiMjIyMgSXRlbSB2ZWN0b3JzCgpgYGB7ciwgZmlnLndpZHRoID0gMywgZmlnLmFzcCA9IDEuNDl9CnBsb3RfVl9mdW4oc3ZkMV83OSwgImNoaWxkcmVuIiwgdHJhbnNwb3NlID0gRkFMU0UsIG11bHRpcGx5ID0gRkFMU0UpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQ2hpbGRyZW4sIDctOXkgKEFwcHJvYWNoICMxKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJWOiBJdGVtIHZlY3RvcnMgKGJ5IG1vZGUpIiwKICAgICAgICMgc3VidGl0bGUgPSAiViB4IFM6IEl0ZW0gdmVjdG9ycyBtdWx0aXBsaWVkIGJ5IHNpbmd1bGFyIHZhbHVlIChieSBtb2RlKSIsCiAgICAgICB4ID0gIiIsIHkgPSAiIikKYGBgCgojIyMjIFBsb3R0aW5nIGluIGRpbWVuc2lvbnMKCmBgYHtyLCBmaWcud2lkdGggPSA0LCBmaWcuYXNwID0gMX0KcGxvdF9WX2Z1bl9pdGVtKHN2ZDFfNzksICJjaGlsZHJlbiIsIGVmYV9jb2xvcnMgPSBUUlVFLAogICAgICAgICAgICAgICAgbW9kZXMgPSBjKCJtb2RlXzAxIiwgIm1vZGVfMDIiKSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBDaGlsZHJlbiwgNy05eSAoQXBwcm9hY2ggIzEpIiwKICAgICAgIHN1YnRpdGxlID0gIlY6IENhcGFjaXRpZXMgaW4gTW9kZXMgMSAmIDIiLAogICAgICAgeCA9ICJNb2RlIDEiLCB5ID0gIk1vZGUgMiIpCgpwbG90X1ZfZnVuX2l0ZW0oc3ZkMV83OSwgImNoaWxkcmVuIiwgZWZhX2NvbG9ycyA9IFRSVUUsCiAgICAgICAgICAgICAgICBtb2RlcyA9IGMoIm1vZGVfMDEiLCAibW9kZV8wMyIpKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IENoaWxkcmVuLCA3LTl5IChBcHByb2FjaCAjMSkiLAogICAgICAgc3VidGl0bGUgPSAiVjogQ2FwYWNpdGllcyBpbiBNb2RlcyAxICYgMyIsCiAgICAgICB4ID0gIk1vZGUgMSIsIHkgPSAiTW9kZSAzIikKCnBsb3RfVl9mdW5faXRlbShzdmQxXzc5LCAiY2hpbGRyZW4iLCBlZmFfY29sb3JzID0gVFJVRSwKICAgICAgICAgICAgICAgIG1vZGVzID0gYygibW9kZV8wMiIsICJtb2RlXzAzIikpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQ2hpbGRyZW4sIDctOXkgKEFwcHJvYWNoICMxKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJWOiBDYXBhY2l0aWVzIGluIE1vZGVzIDIgJiAzIiwKICAgICAgIHggPSAiTW9kZSAyIiwgeSA9ICJNb2RlIDMiKQpgYGAKCmBgYHtyLCBmaWcud2lkdGggPSA0LCBmaWcuYXNwID0gMX0KcGxvdF9VX2Z1bl9wcm9wKHN2ZDFfNzksICJjaGlsZHJlbiIsIAogICAgICAgICAgICAgICAgbW9kZXMgPSBjKCJtb2RlXzAxIiwgIm1vZGVfMDIiKSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBDaGlsZHJlbiwgNy05eSAoQXBwcm9hY2ggIzEpIiwKICAgICAgIHN1YnRpdGxlID0gIlU6IENoYXJhY3RlcnMgaW4gTW9kZXMgMSAmIDIiLAogICAgICAgeCA9ICJNb2RlIDEiLCB5ID0gIk1vZGUgMiIpCgpwbG90X1VfZnVuX3Byb3Aoc3ZkMV83OSwgImNoaWxkcmVuIiwKICAgICAgICAgICAgICAgIG1vZGVzID0gYygibW9kZV8wMSIsICJtb2RlXzAzIikpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQ2hpbGRyZW4sIDctOXkgKEFwcHJvYWNoICMxKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJVOiBDaGFyYWN0ZXJzIGluIE1vZGVzIDEgJiAzIiwKICAgICAgIHggPSAiTW9kZSAxIiwgeSA9ICJNb2RlIDMiKQoKcGxvdF9VX2Z1bl9wcm9wKHN2ZDFfNzksICJjaGlsZHJlbiIsIAogICAgICAgICAgICAgICAgbW9kZXMgPSBjKCJtb2RlXzAyIiwgIm1vZGVfMDMiKSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBDaGlsZHJlbiwgNy05eSAoQXBwcm9hY2ggIzEpIiwKICAgICAgIHN1YnRpdGxlID0gIlU6IENoYXJhY3RlcnMgaW4gTW9kZXMgMiAmIDMiLAogICAgICAgeCA9ICJNb2RlIDIiLCB5ID0gIk1vZGUgMyIpCmBgYAoKCiMjIyBDaGlsZHJlbiwgNC02eQoKYGBge3J9CnN2ZDFfNDYgPC0gc3ZkKGRfNDYgJT4lIGNvbHVtbl90b19yb3duYW1lcygiY2hhcmFjdGVyIiksIAogICAgICAgICAgICAgICBucm93KGRfNDYpLCBucm93KGRfNDYpKQpgYGAKCiMjIyMgUmVjb25zdHJ1Y3RlZCBkYXRhCgpgYGB7ciwgZmlnLndpZHRoID0gNCwgZmlnLmFzcCA9IDAuNjd9CnBsb3RfcmVjb25zdHJ1Y3RfZnVuKHN2ZDFfNDYsIHRyYW5zcG9zZSA9IEZBTFNFLCAiY2hpbGRyZW4iKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IENoaWxkcmVuLCA0LTZ5IChBcHByb2FjaCAjMSkiLAogICAgICAgc3VidGl0bGUgPSAiUmVjb25zdHJ1Y3RlZCBkYXRhc2V0OiBTdW0gb2Ygb3V0ZXIgcHJvZHVjdHMgKFUsIFYpIG11bHRpcGxpZWQgYnkgUyIsCiAgICAgICB4ID0gIiIsIHkgPSAiIikKYGBgCgojIyMjIEZlYXR1cmUgdmVjdG9ycwoKYGBge3IsIGZpZy53aWR0aCA9IDMsIGZpZy5hc3AgPSAxfQpwbG90X1VfZnVuKHN2ZDFfNDYsICJjaGlsZHJlbiIsIHRyYW5zcG9zZSA9IEZBTFNFLCBtdWx0aXBseSA9IEZBTFNFKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IENoaWxkcmVuLCA0LTZ5IChBcHByb2FjaCAjMSkiLAogICAgICAgc3VidGl0bGUgPSAiVTogRmVhdHVyZSB2ZWN0b3JzIChieSBtb2RlKSIsCiAgICAgICAjIHN1YnRpdGxlID0gIlUgeCBTOiBGZWF0dXJlIHZlY3RvcnMgbXVsdGlwbGllZCBieSBzaW5ndWxhciB2YWx1ZSAoYnkgbW9kZSkiLAogICAgICAgeCA9ICIiLCB5ID0gIiIpCmBgYAoKIyMjIyBTaW5ndWxhciB2YWx1ZXMKCmBgYHtyLCBmaWcud2lkdGggPSAzLCBmaWcuYXNwID0gMX0KcGxvdF9TX2Z1bihzdmQxXzQ2KSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IENoaWxkcmVuLCA0LTZ5IChBcHByb2FjaCAjMSkiLAogICAgICAgc3VidGl0bGUgPSAiUzogU2luZ3VsYXIgdmFsdWVzIChieSBtb2RlKSIsCiAgICAgICB4ID0gIiIsIHkgPSAiIikKYGBgCgojIyMjIEl0ZW0gdmVjdG9ycwoKYGBge3IsIGZpZy53aWR0aCA9IDMsIGZpZy5hc3AgPSAxLjQ5fQpwbG90X1ZfZnVuKHN2ZDFfNDYsICJjaGlsZHJlbiIsIHRyYW5zcG9zZSA9IEZBTFNFLCBtdWx0aXBseSA9IEZBTFNFKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IENoaWxkcmVuLCA0LTZ5IChBcHByb2FjaCAjMSkiLAogICAgICAgc3VidGl0bGUgPSAiVjogSXRlbSB2ZWN0b3JzIChieSBtb2RlKSIsCiAgICAgICAjIHN1YnRpdGxlID0gIlYgeCBTOiBJdGVtIHZlY3RvcnMgbXVsdGlwbGllZCBieSBzaW5ndWxhciB2YWx1ZSAoYnkgbW9kZSkiLAogICAgICAgeCA9ICIiLCB5ID0gIiIpCmBgYAoKIyMjIyBQbG90dGluZyBpbiBkaW1lbnNpb25zCgpgYGB7ciwgZmlnLndpZHRoID0gNCwgZmlnLmFzcCA9IDF9CnBsb3RfVl9mdW5faXRlbShzdmQxXzQ2LCAiY2hpbGRyZW4iLCBlZmFfY29sb3JzID0gVFJVRSwgCiAgICAgICAgICAgICAgICBtb2RlcyA9IGMoIm1vZGVfMDEiLCAibW9kZV8wMiIpKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IENoaWxkcmVuLCA0LTZ5IChBcHByb2FjaCAjMSkiLAogICAgICAgc3VidGl0bGUgPSAiVjogQ2FwYWNpdGllcyBpbiBNb2RlcyAxICYgMiIsCiAgICAgICB4ID0gIk1vZGUgMSIsIHkgPSAiTW9kZSAyIikKCnBsb3RfVl9mdW5faXRlbShzdmQxXzQ2LCAiY2hpbGRyZW4iLCBlZmFfY29sb3JzID0gVFJVRSwKICAgICAgICAgICAgICAgIG1vZGVzID0gYygibW9kZV8wMSIsICJtb2RlXzAzIikpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQ2hpbGRyZW4sIDQtNnkgKEFwcHJvYWNoICMxKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJWOiBDYXBhY2l0aWVzIGluIE1vZGVzIDEgJiAzIiwKICAgICAgIHggPSAiTW9kZSAxIiwgeSA9ICJNb2RlIDMiKQoKcGxvdF9WX2Z1bl9pdGVtKHN2ZDFfNDYsICJjaGlsZHJlbiIsIGVmYV9jb2xvcnMgPSBUUlVFLAogICAgICAgICAgICAgICAgbW9kZXMgPSBjKCJtb2RlXzAyIiwgIm1vZGVfMDMiKSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBDaGlsZHJlbiwgNC02eSAoQXBwcm9hY2ggIzEpIiwKICAgICAgIHN1YnRpdGxlID0gIlY6IENhcGFjaXRpZXMgaW4gTW9kZXMgMiAmIDMiLAogICAgICAgeCA9ICJNb2RlIDIiLCB5ID0gIk1vZGUgMyIpCmBgYAoKYGBge3IsIGZpZy53aWR0aCA9IDQsIGZpZy5hc3AgPSAxfQpwbG90X1VfZnVuX3Byb3Aoc3ZkMV80NiwgImNoaWxkcmVuIiwgCiAgICAgICAgICAgICAgICBtb2RlcyA9IGMoIm1vZGVfMDEiLCAibW9kZV8wMiIpKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IENoaWxkcmVuLCA0LTZ5IChBcHByb2FjaCAjMSkiLAogICAgICAgc3VidGl0bGUgPSAiVTogQ2hhcmFjdGVycyBpbiBNb2RlcyAxICYgMiIsCiAgICAgICB4ID0gIk1vZGUgMSIsIHkgPSAiTW9kZSAyIikKCnBsb3RfVV9mdW5fcHJvcChzdmQxXzQ2LCAiY2hpbGRyZW4iLCAKICAgICAgICAgICAgICAgIG1vZGVzID0gYygibW9kZV8wMSIsICJtb2RlXzAzIikpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQ2hpbGRyZW4sIDQtNnkgKEFwcHJvYWNoICMxKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJVOiBDaGFyYWN0ZXJzIGluIE1vZGVzIDEgJiAzIiwKICAgICAgIHggPSAiTW9kZSAxIiwgeSA9ICJNb2RlIDMiKQoKcGxvdF9VX2Z1bl9wcm9wKHN2ZDFfNDYsICJjaGlsZHJlbiIsICAKICAgICAgICAgICAgICAgIG1vZGVzID0gYygibW9kZV8wMiIsICJtb2RlXzAzIikpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQ2hpbGRyZW4sIDQtNnkgKEFwcHJvYWNoICMxKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJVOiBDaGFyYWN0ZXJzIGluIE1vZGVzIDIgJiAzIiwKICAgICAgIHggPSAiTW9kZSAyIiwgeSA9ICJNb2RlIDMiKQpgYGAKCgojIyMgQ2hpbGRyZW4sIDQtOXkKCmBgYHtyfQpzdmQxXzQ5IDwtIHN2ZChkXzc5ICU+JQogICAgICAgICAgICAgICAgIG11dGF0ZShjaGFyYWN0ZXIgPSBwYXN0ZShjaGFyYWN0ZXIsICI3OSIsIHNlcCA9ICJfIikpICU+JQogICAgICAgICAgICAgICAgIGJpbmRfcm93cyhkXzQ2ICU+JQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11dGF0ZShjaGFyYWN0ZXIgPSBwYXN0ZShjaGFyYWN0ZXIsICI0NiIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXAgPSAiXyIpKSkgJT4lIAogICAgICAgICAgICAgICAgIGNvbHVtbl90b19yb3duYW1lcygiY2hhcmFjdGVyIiksIAogICAgICAgICAgICAgICBucm93KGRfNzkpICsgbnJvdyhkXzQ2KSwgbnJvdyhkXzc5KSArIG5yb3coZF80NikpCmBgYAoKIyMjIyBSZWNvbnN0cnVjdGVkIGRhdGEKCmBgYHtyLCBmaWcud2lkdGggPSA0LCBmaWcuYXNwID0gMX0KcGxvdF9yZWNvbnN0cnVjdF9mdW4oc3ZkMV80OSwgdHJhbnNwb3NlID0gRkFMU0UsICJjaGlsZHJlbl9jb21iX2NoYXIiKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IENoaWxkcmVuLCA0LTl5IChBcHByb2FjaCAjMSkiLAogICAgICAgc3VidGl0bGUgPSAiUmVjb25zdHJ1Y3RlZCBkYXRhc2V0OiBTdW0gb2Ygb3V0ZXIgcHJvZHVjdHMgKFUsIFYpIG11bHRpcGxpZWQgYnkgUyIsCiAgICAgICB4ID0gIiIsIHkgPSAiIikgKwogIGdlb21faGxpbmUoeWludGVyY2VwdCA9IDkuNSwgc2l6ZSA9IDEpCmBgYAoKIyMjIyBGZWF0dXJlIHZlY3RvcnMKCmBgYHtyLCBmaWcud2lkdGggPSAzLCBmaWcuYXNwID0gMX0KcGxvdF9VX2Z1bihzdmQxXzQ5LCAiY2hpbGRyZW5fY29tYl9jaGFyIiwgdHJhbnNwb3NlID0gRkFMU0UsIG11bHRpcGx5ID0gRkFMU0UpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQ2hpbGRyZW4sIDQtOXkgKEFwcHJvYWNoICMxKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJVOiBGZWF0dXJlIHZlY3RvcnMgKGJ5IG1vZGUpIiwKICAgICAgICMgc3VidGl0bGUgPSAiVSB4IFM6IEZlYXR1cmUgdmVjdG9ycyBtdWx0aXBsaWVkIGJ5IHNpbmd1bGFyIHZhbHVlIChieSBtb2RlKSIsCiAgICAgICB4ID0gIiIsIHkgPSAiIikgKwogIGdlb21faGxpbmUoeWludGVyY2VwdCA9IDkuNSwgc2l6ZSA9IDEpCmBgYAoKIyMjIyBTaW5ndWxhciB2YWx1ZXMKCmBgYHtyLCBmaWcud2lkdGggPSAzLCBmaWcuYXNwID0gMX0KcGxvdF9TX2Z1bihzdmQxXzQ5KSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IENoaWxkcmVuLCA0LTl5IChBcHByb2FjaCAjMSkiLAogICAgICAgc3VidGl0bGUgPSAiUzogU2luZ3VsYXIgdmFsdWVzIChieSBtb2RlKSIsCiAgICAgICB4ID0gIiIsIHkgPSAiIikKYGBgCgojIyMjIEl0ZW0gdmVjdG9ycwoKYGBge3IsIGZpZy53aWR0aCA9IDMsIGZpZy5hc3AgPSAxfQpwbG90X1ZfZnVuKHN2ZDFfNDksICJjaGlsZHJlbl9jb21iX2NoYXIiLCB0cmFuc3Bvc2UgPSBGQUxTRSwgbXVsdGlwbHkgPSBGQUxTRSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBDaGlsZHJlbiwgNC05eSAoQXBwcm9hY2ggIzEpIiwKICAgICAgIHN1YnRpdGxlID0gIlY6IEl0ZW0gdmVjdG9ycyAoYnkgbW9kZSkiLAogICAgICAgIyBzdWJ0aXRsZSA9ICJWIHggUzogSXRlbSB2ZWN0b3JzIG11bHRpcGxpZWQgYnkgc2luZ3VsYXIgdmFsdWUgKGJ5IG1vZGUpIiwKICAgICAgIHggPSAiIiwgeSA9ICIiKQpgYGAKCiMjIyMgUGxvdHRpbmcgaW4gZGltZW5zaW9ucwoKYGBge3IsIGZpZy53aWR0aCA9IDQsIGZpZy5hc3AgPSAxfQpwbG90X1ZfZnVuX2l0ZW0oc3ZkMV80OSwgImNoaWxkcmVuX2NvbWJfY2hhciIsIGVmYV9jb2xvcnMgPSBUUlVFLCAKICAgICAgICAgICAgICAgIG1vZGVzID0gYygibW9kZV8wMSIsICJtb2RlXzAyIikpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQ2hpbGRyZW4sIDQtOXkgKEFwcHJvYWNoICMxKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJWOiBDYXBhY2l0aWVzIGluIE1vZGVzIDEgJiAyIiwKICAgICAgIHggPSAiTW9kZSAxIiwgeSA9ICJNb2RlIDIiKQoKcGxvdF9WX2Z1bl9pdGVtKHN2ZDFfNDksICJjaGlsZHJlbl9jb21iX2NoYXIiLCBlZmFfY29sb3JzID0gVFJVRSwKICAgICAgICAgICAgICAgIG1vZGVzID0gYygibW9kZV8wMSIsICJtb2RlXzAzIikpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQ2hpbGRyZW4sIDQtOXkgKEFwcHJvYWNoICMxKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJWOiBDYXBhY2l0aWVzIGluIE1vZGVzIDEgJiAzIiwKICAgICAgIHggPSAiTW9kZSAxIiwgeSA9ICJNb2RlIDMiKQoKcGxvdF9WX2Z1bl9pdGVtKHN2ZDFfNDksICJjaGlsZHJlbl9jb21iX2NoYXIiLCBlZmFfY29sb3JzID0gVFJVRSwKICAgICAgICAgICAgICAgIG1vZGVzID0gYygibW9kZV8wMiIsICJtb2RlXzAzIikpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQ2hpbGRyZW4sIDQtOXkgKEFwcHJvYWNoICMxKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJWOiBDYXBhY2l0aWVzIGluIE1vZGVzIDIgJiAzIiwKICAgICAgIHggPSAiTW9kZSAyIiwgeSA9ICJNb2RlIDMiKQpgYGAKCmBgYHtyLCBmaWcud2lkdGggPSA0LCBmaWcuYXNwID0gMX0KdGVtcF9yZWN0IDwtIFVfZnVuKHN2ZDFfNDksICJjaGlsZHJlbl9jb21iX2NoYXIiKSAlPiUKICBtdXRhdGUoYWdlX2dyb3VwID0gaWZlbHNlKGdyZXBsKCI3OSIsIHByb3BlcnR5KSwgIjctOXkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKGdyZXBsKCI0NiIsIHByb3BlcnR5KSwgIjQtNnkiLCBOQSkpLAogICAgICAgICBwcm9wZXJ0eSA9IGdzdWIoIl8uLiQiLCAiIiwgcHJvcGVydHkpKSAlPiUKICBzcHJlYWQobW9kZSwgdmFsdWUpICU+JQogIGdyb3VwX2J5KGFnZV9ncm91cCkgJT4lCiAgc3VtbWFyaXNlKG1pbl8wMSA9IG1pbihtb2RlXzAxKSwgbWF4XzAxID0gbWF4KG1vZGVfMDEpLCAKICAgICAgICAgICAgbWluXzAyID0gbWluKG1vZGVfMDIpLCBtYXhfMDIgPSBtYXgobW9kZV8wMiksCiAgICAgICAgICAgIG1pbl8wMyA9IG1pbihtb2RlXzAzKSwgbWF4XzAzID0gbWF4KG1vZGVfMDMpKSAlPiUKICB1bmdyb3VwKCkgJT4lCiAgZGF0YS5mcmFtZSgpCgpVX2Z1bihzdmQxXzQ5LCAiY2hpbGRyZW5fY29tYl9jaGFyIikgJT4lCiAgbXV0YXRlKGFnZV9ncm91cCA9IGlmZWxzZShncmVwbCgiNzkiLCBwcm9wZXJ0eSksICI3LTl5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShncmVwbCgiNDYiLCBwcm9wZXJ0eSksICI0LTZ5IiwgTkEpKSwKICAgICAgICAgcHJvcGVydHkgPSBnc3ViKCJfLi4kIiwgIiIsIHByb3BlcnR5KSkgJT4lCiAgc3ByZWFkKG1vZGUsIHZhbHVlKSAlPiUKICBnZ3Bsb3QoYWVzKHggPSBtb2RlXzAxLCB5ID0gbW9kZV8wMiwgbGFiZWwgPSBwcm9wZXJ0eSwgY29sb3IgPSBhZ2VfZ3JvdXApKSArCiAgZ2VvbV9yZWN0KGRhdGEgPSB0ZW1wX3JlY3QsCiAgICAgICAgICAgIGFlcyh4ID0gTlVMTCwgeSA9IE5VTEwsIGxhYmVsID0gTlVMTCwKICAgICAgICAgICAgICAgIHhtaW4gPSBtaW5fMDEsIHhtYXggPSBtYXhfMDEsIHltaW4gPSBtaW5fMDIsIHltYXggPSBtYXhfMDIsCiAgICAgICAgICAgICAgICBjb2xvciA9IGFnZV9ncm91cCwgZmlsbCA9IGFnZV9ncm91cCwgZ3JvdXAgPSBhZ2VfZ3JvdXApLCAKICAgICAgICAgICAgYWxwaGEgPSAwLjA1KSArCiAgZ2VvbV9wb2ludCgpICsKICBzY2FsZV94X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKC0xMDAsIDEwMCwgLjEpKSArCiAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgtMTAwLCAxMDAsIC4xKSkgKwogIGdncmVwZWw6Omdlb21fdGV4dF9yZXBlbChzaG93LmxlZ2VuZCA9IEYsIHNpemUgPSAzKSArCiAgdGhlbWVfbWluaW1hbCgpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQ2hpbGRyZW4sIDQtOXkgKEFwcHJvYWNoICMxLCBDb21iLiBNZXRob2QgIzEpIiwKICAgICAgIHN1YnRpdGxlID0gIlU6IENoYXJhY3RlcnMgaW4gTW9kZXMgMSAmIDIiLAogICAgICAgeCA9ICJNb2RlIDEiLCB5ID0gIk1vZGUgMiIsIGNvbG9yID0gIkFnZSBHcm91cCIsIGZpbGwgPSAiQWdlIEdyb3VwIikKClVfZnVuKHN2ZDFfNDksICJjaGlsZHJlbl9jb21iX2NoYXIiKSAlPiUKICBtdXRhdGUoYWdlX2dyb3VwID0gaWZlbHNlKGdyZXBsKCI3OSIsIHByb3BlcnR5KSwgIjctOXkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKGdyZXBsKCI0NiIsIHByb3BlcnR5KSwgIjQtNnkiLCBOQSkpLAogICAgICAgICBwcm9wZXJ0eSA9IGdzdWIoIl8uLiQiLCAiIiwgcHJvcGVydHkpKSAlPiUKICBzcHJlYWQobW9kZSwgdmFsdWUpICU+JQogIGdncGxvdChhZXMoeCA9IG1vZGVfMDEsIHkgPSBtb2RlXzAzLCBsYWJlbCA9IHByb3BlcnR5LCBjb2xvciA9IGFnZV9ncm91cCkpICsKICBnZW9tX3JlY3QoZGF0YSA9IHRlbXBfcmVjdCwKICAgICAgICAgICAgYWVzKHggPSBOVUxMLCB5ID0gTlVMTCwgbGFiZWwgPSBOVUxMLAogICAgICAgICAgICAgICAgeG1pbiA9IG1pbl8wMSwgeG1heCA9IG1heF8wMSwgeW1pbiA9IG1pbl8wMywgeW1heCA9IG1heF8wMywKICAgICAgICAgICAgICAgIGNvbG9yID0gYWdlX2dyb3VwLCBmaWxsID0gYWdlX2dyb3VwLCBncm91cCA9IGFnZV9ncm91cCksIAogICAgICAgICAgICBhbHBoYSA9IDAuMDUpICsKICBnZW9tX3BvaW50KCkgKwogIHNjYWxlX3hfY29udGludW91cyhicmVha3MgPSBzZXEoLTEwMCwgMTAwLCAuMSkpICsKICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKC0xMDAsIDEwMCwgLjEpKSArCiAgZ2dyZXBlbDo6Z2VvbV90ZXh0X3JlcGVsKHNob3cubGVnZW5kID0gRiwgc2l6ZSA9IDMpICsKICB0aGVtZV9taW5pbWFsKCkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBDaGlsZHJlbiwgNC05eSAoQXBwcm9hY2ggIzEsIENvbWIuIE1ldGhvZCAjMSkiLAogICAgICAgc3VidGl0bGUgPSAiVTogQ2hhcmFjdGVycyBpbiBNb2RlcyAxICYgMyIsCiAgICAgICB4ID0gIk1vZGUgMSIsIHkgPSAiTW9kZSAzIiwgY29sb3IgPSAiQWdlIEdyb3VwIiwgZmlsbCA9ICJBZ2UgR3JvdXAiKQoKVV9mdW4oc3ZkMV80OSwgImNoaWxkcmVuX2NvbWJfY2hhciIpICU+JQogIG11dGF0ZShhZ2VfZ3JvdXAgPSBpZmVsc2UoZ3JlcGwoIjc5IiwgcHJvcGVydHkpLCAiNy05eSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoZ3JlcGwoIjQ2IiwgcHJvcGVydHkpLCAiNC02eSIsIE5BKSksCiAgICAgICAgIHByb3BlcnR5ID0gZ3N1YigiXy4uJCIsICIiLCBwcm9wZXJ0eSkpICU+JQogIHNwcmVhZChtb2RlLCB2YWx1ZSkgJT4lCiAgZ2dwbG90KGFlcyh4ID0gbW9kZV8wMiwgeSA9IG1vZGVfMDMsIGxhYmVsID0gcHJvcGVydHksIGNvbG9yID0gYWdlX2dyb3VwKSkgKwogIGdlb21fcmVjdChkYXRhID0gdGVtcF9yZWN0LAogICAgICAgICAgICBhZXMoeCA9IE5VTEwsIHkgPSBOVUxMLCBsYWJlbCA9IE5VTEwsCiAgICAgICAgICAgICAgICB4bWluID0gbWluXzAyLCB4bWF4ID0gbWF4XzAyLCB5bWluID0gbWluXzAzLCB5bWF4ID0gbWF4XzAzLAogICAgICAgICAgICAgICAgY29sb3IgPSBhZ2VfZ3JvdXAsIGZpbGwgPSBhZ2VfZ3JvdXAsIGdyb3VwID0gYWdlX2dyb3VwKSwgCiAgICAgICAgICAgIGFscGhhID0gMC4wNSkgKwogIGdlb21fcG9pbnQoKSArCiAgc2NhbGVfeF9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgtMTAwLCAxMDAsIC4xKSkgKwogIHNjYWxlX3lfY29udGludW91cyhicmVha3MgPSBzZXEoLTEwMCwgMTAwLCAuMSkpICsKICBnZ3JlcGVsOjpnZW9tX3RleHRfcmVwZWwoc2hvdy5sZWdlbmQgPSBGLCBzaXplID0gMykgKwogIHRoZW1lX21pbmltYWwoKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IENoaWxkcmVuLCA0LTl5IChBcHByb2FjaCAjMSwgQ29tYi4gTWV0aG9kICMxKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJVOiBDaGFyYWN0ZXJzIGluIE1vZGVzIDIgJiAzIiwKICAgICAgIHggPSAiTW9kZSAyIiwgeSA9ICJNb2RlIDMiLCBjb2xvciA9ICJBZ2UgR3JvdXAiLCBmaWxsID0gIkFnZSBHcm91cCIpCgpybSh0ZW1wX3JlY3QpCmBgYAoKCiMgQXBwcm9hY2ggIzIKCkluIEFwcHJvYWNoICMyIHdlIHByb2NlZWQgd2l0aG91dCBtZWFuLWNlbnRlcmluZywgd2l0aCBjYXBhY2l0aWVzIGFzIHJvd3MgYW5kIGNoYXJhY3RlcnMgYXMgY29sdW1ucy4KCiMjIFJhdyBkYXRhIG1hdHJpeCB2aXN1YWxpemF0aW9ucyB7LnRhYnNldH0KCiMjIyBBZHVsdHMKCkluIHRoaXMgc3R1ZHksIDQzMSBVUyBhZHVsdHMgcmF0ZWQgMjEgY2hhcmFjdGVycyAoYmV0d2Vlbi1zdWJqZWN0cykgb24gNDAgY2FwYWNpdGllcyAod2l0aGluLXN1YmplY3RzKS4gKFNlZSBXZWlzbWFuLCBEd2VjaywgJiBNYXJrbWFuLCAyMDE3LCBfUE5BU18sIFN0dWR5IDQuKQoKYGBge3IsIGZpZy53aWR0aCA9IDMsIGZpZy5hc3AgPSAxLjc5fQpkX2FkICU+JQogIGdhdGhlcihjYXBhY2l0eSwgbWVhbl9yYXRpbmcsIC1jaGFyYWN0ZXIpICU+JQogIGdncGxvdChhZXMoeSA9IGNhcGFjaXR5LCB4ID0gY2hhcmFjdGVyLCBmaWxsID0gbWVhbl9yYXRpbmcpKSArCiAgZ2VvbV90aWxlKGNvbG9yID0gImJsYWNrIikgKwogIHNjYWxlX2ZpbGxfZ3JhZGllbnQobG93ID0gImJsYWNrIiwgaGlnaCA9ICJ3aGl0ZSIsICMgbGltaXRzID0gYygtMywgMyksCiAgICAgICAgICAgICAgICAgICAgICBndWlkZSA9IGd1aWRlX2NvbG9yYmFyKGJhcmhlaWdodCA9IDE1KSkgKwogIHRoZW1lX21pbmltYWwoKSArCiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA5MCwgaGp1c3QgPSAxLCB2anVzdCA9IDAuNSkpICsKICBsYWJzKHRpdGxlID0gIlJhdyBkYXRhOiBBZHVsdHMiLAogICAgICAgc3VidGl0bGUgPSAiMjEgY2hhcmFjdGVycywgNDAgY2FwYWNpdGllcyIsCiAgICAgICB5ID0gIkNhcGFjaXR5IiwKICAgICAgIHggPSAiQ2hhcmFjdGVyIiwKICAgICAgIGZpbGwgPSAiTWVhbiByYXRpbmciKQpgYGAKCiMjIyA3LTl5byBjaGlsZHJlbgoKSW4gdGhpcyBzdHVkeSwgMTIzIDctIHRvIDkteWVhci1vbGQgVVMgY2hpbGRyZW4gcmF0ZWQgOSBjaGFyYWN0ZXJzIChiZXR3ZWVuLXN1YmplY3RzKSBvbiAyMCBjYXBhY2l0aWVzICh3aXRoaW4gc3ViamVjdHMpLiAoU2VlIFdlaXNtYW4sIER3ZWNrLCAmIE1hcmttYW4sIDIwMTgsIF9Qcm9jLiBDb2dTY2lfLikKCmBgYHtyLCBmaWcud2lkdGggPSAzLCBmaWcuYXNwID0gMS40OX0KZF83OSAlPiUKICBnYXRoZXIoY2FwYWNpdHksIG1lYW5fcmF0aW5nLCAtY2hhcmFjdGVyKSAlPiUKICBnZ3Bsb3QoYWVzKHkgPSBjYXBhY2l0eSwgeCA9IGNoYXJhY3RlciwgZmlsbCA9IG1lYW5fcmF0aW5nKSkgKwogIGdlb21fdGlsZShjb2xvciA9ICJibGFjayIpICsKICBzY2FsZV9maWxsX2dyYWRpZW50KGxvdyA9ICJibGFjayIsIGhpZ2ggPSAid2hpdGUiLCAjIGxpbWl0cyA9IGMoMCwgMSksCiAgICAgICAgICAgICAgICAgICAgICBndWlkZSA9IGd1aWRlX2NvbG9yYmFyKGJhcmhlaWdodCA9IDE1KSkgKwogIHRoZW1lX21pbmltYWwoKSArCiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA5MCwgaGp1c3QgPSAxLCB2anVzdCA9IDAuNSkpICsKICBsYWJzKHRpdGxlID0gIlJhdyBkYXRhOiA3LSB0byA5LXllYXItb2xkIGNoaWxkcmVuIiwKICAgICAgIHN1YnRpdGxlID0gIjkgY2hhcmFjdGVycywgMjAgY2FwYWNpdGllcyIsCiAgICAgICB5ID0gIkNhcGFjaXR5IiwKICAgICAgIHggPSAiQ2hhcmFjdGVyIiwKICAgICAgIGZpbGwgPSAiTWVhbiByYXRpbmciKQpgYGAKCiMjIyA0LTZ5byBjaGlsZHJlbgoKSW4gdGhpcyBzdHVkeSwgMTI0IDQtIHRvIDYteWVhci1vbGQgVVMgY2hpbGRyZW4gcmF0ZWQgOSBjaGFyYWN0ZXJzIChiZXR3ZWVuLXN1YmplY3RzKSBvbiAyMCBjYXBhY2l0aWVzICh3aXRoaW4gc3ViamVjdHMpLiAoU2VlIFdlaXNtYW4sIER3ZWNrLCAmIE1hcmttYW4sIDIwMTgsIF9Qcm9jLiBDb2dTY2lfLikKCmBgYHtyLCBmaWcud2lkdGggPSAzLCBmaWcuYXNwID0gMS40OX0KZF80NiAlPiUKICBnYXRoZXIoY2FwYWNpdHksIG1lYW5fcmF0aW5nLCAtY2hhcmFjdGVyKSAlPiUKICBnZ3Bsb3QoYWVzKHkgPSBjYXBhY2l0eSwgeCA9IGNoYXJhY3RlciwgZmlsbCA9IG1lYW5fcmF0aW5nKSkgKwogIGdlb21fdGlsZShjb2xvciA9ICJibGFjayIpICsKICBzY2FsZV9maWxsX2dyYWRpZW50KGxvdyA9ICJibGFjayIsIGhpZ2ggPSAid2hpdGUiLCAjIGxpbWl0cyA9IGMoMCwgMSksCiAgICAgICAgICAgICAgICAgICAgICBndWlkZSA9IGd1aWRlX2NvbG9yYmFyKGJhcmhlaWdodCA9IDE1KSkgKwogIHRoZW1lX21pbmltYWwoKSArCiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA5MCwgaGp1c3QgPSAxLCB2anVzdCA9IDAuNSkpICsKICBsYWJzKHRpdGxlID0gIlJhdyBkYXRhOiA0LSB0byA2LXllYXItb2xkIGNoaWxkcmVuIiwKICAgICAgIHN1YnRpdGxlID0gIjkgY2hhcmFjdGVycywgMjAgY2FwYWNpdGllcyIsCiAgICAgICB5ID0gIkNhcGFjaXR5IiwKICAgICAgIHggPSAiQ2hhcmFjdGVyIiwKICAgICAgIGZpbGwgPSAiTWVhbiByYXRpbmciKQpgYGAKCgojIyBTVkQgey50YWJzZXR9CgojIyMgQWR1bHRzCgpgYGB7cn0Kc3ZkMl9hZCA8LSBzdmQoZF9hZCAlPiUgY29sdW1uX3RvX3Jvd25hbWVzKCJjaGFyYWN0ZXIiKSAlPiUgdCgpLCAKICAgICAgICAgICAgICAgbnJvdyhkX2FkKSwgbnJvdyhkX2FkKSkKYGBgCgojIyMjIFJlY29uc3RydWN0ZWQgZGF0YQoKYGBge3IsIGZpZy53aWR0aCA9IDMsIGZpZy5hc3AgPSAxLjQ5fQpwbG90X3JlY29uc3RydWN0X2Z1bihzdmQyX2FkLCAiYWR1bHRzIiwgVFJVRSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBBZHVsdHMgKEFwcHJvYWNoICMyKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJSZWNvbnN0cnVjdGVkIGRhdGFzZXQ6IFN1bSBvZiBvdXRlciBwcm9kdWN0cyAoVSwgVikgbXVsdGlwbGllZCBieSBTIiwKICAgICAgIHggPSAiIiwgeSA9ICIiKQpgYGAKCiMjIyMgRmVhdHVyZSB2ZWN0b3JzCgpgYGB7ciwgZmlnLndpZHRoID0gMywgZmlnLmFzcCA9IDEuNDl9CnBsb3RfVV9mdW4oc3ZkMl9hZCwgImFkdWx0cyIsIHRyYW5zcG9zZSA9IFRSVUUsIG11bHRpcGx5ID0gRkFMU0UpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQWR1bHRzIChBcHByb2FjaCAjMikiLAogICAgICAgc3VidGl0bGUgPSAiVTogRmVhdHVyZSB2ZWN0b3JzIChieSBtb2RlKSIsCiAgICAgICAjIHN1YnRpdGxlID0gIlUgeCBTOiBGZWF0dXJlIHZlY3RvcnMgbXVsdGlwbGllZCBieSBzaW5ndWxhciB2YWx1ZSAoYnkgbW9kZSkiLAogICAgICAgeCA9ICIiLCB5ID0gIiIpCmBgYAoKIyMjIyBTaW5ndWxhciB2YWx1ZXMKCmBgYHtyLCBmaWcud2lkdGggPSAzLCBmaWcuYXNwID0gMX0KcGxvdF9TX2Z1bihzdmQyX2FkKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IEFkdWx0cyAoQXBwcm9hY2ggIzIpIiwKICAgICAgIHN1YnRpdGxlID0gIlM6IFNpbmd1bGFyIHZhbHVlcyAoYnkgbW9kZSkiLAogICAgICAgeCA9ICIiLCB5ID0gIiIpCmBgYAoKIyMjIyBJdGVtIHZlY3RvcnMKCmBgYHtyLCBmaWcud2lkdGggPSAzLCBmaWcuYXNwID0gMX0KcGxvdF9WX2Z1bihzdmQyX2FkLCAiYWR1bHRzIiwgdHJhbnNwb3NlID0gVFJVRSwgbXVsdGlwbHkgPSBGQUxTRSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBBZHVsdHMgKEFwcHJvYWNoICMyKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJWOiBJdGVtIHZlY3RvcnMgKGJ5IG1vZGUpIiwKICAgICAgICMgc3VidGl0bGUgPSAiViB4IFM6IEl0ZW0gdmVjdG9ycyBtdWx0aXBsaWVkIGJ5IHNpbmd1bGFyIHZhbHVlIChieSBtb2RlKSIsCiAgICAgICB4ID0gIiIsIHkgPSAiIikKYGBgCgojIyMjIFBsb3R0aW5nIGluIGRpbWVuc2lvbnMKCmBgYHtyLCBmaWcud2lkdGggPSA0LCBmaWcuYXNwID0gMX0KcGxvdF9WX2Z1bl9pdGVtKHN2ZDJfYWQsICJhZHVsdHMiLCB0cmFuc3Bvc2UgPSBUUlVFLCAKICAgICAgICAgICAgICAgIG1vZGVzID0gYygibW9kZV8wMSIsICJtb2RlXzAyIikpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQWR1bHRzIChBcHByb2FjaCAjMikiLAogICAgICAgc3VidGl0bGUgPSAiVjogQ2hhcmFjdGVycyBpbiBNb2RlcyAxICYgMiIsCiAgICAgICB4ID0gIk1vZGUgMSIsIHkgPSAiTW9kZSAyIikKCnBsb3RfVl9mdW5faXRlbShzdmQyX2FkLCAiYWR1bHRzIiwgdHJhbnNwb3NlID0gVFJVRSwgCiAgICAgICAgICAgICAgICBtb2RlcyA9IGMoIm1vZGVfMDEiLCAibW9kZV8wMyIpKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IEFkdWx0cyAoQXBwcm9hY2ggIzIpIiwKICAgICAgIHN1YnRpdGxlID0gIlY6IENoYXJhY3RlcnMgaW4gTW9kZXMgMSAmIDMiLAogICAgICAgeCA9ICJNb2RlIDEiLCB5ID0gIk1vZGUgMyIpCgpwbG90X1ZfZnVuX2l0ZW0oc3ZkMl9hZCwgImFkdWx0cyIsIHRyYW5zcG9zZSA9IFRSVUUsIAogICAgICAgICAgICAgICAgbW9kZXMgPSBjKCJtb2RlXzAyIiwgIm1vZGVfMDMiKSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBBZHVsdHMgKEFwcHJvYWNoICMyKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJWOiBDaGFyYWN0ZXJzIGluIE1vZGVzIDIgJiAzIiwKICAgICAgIHggPSAiTW9kZSAyIiwgeSA9ICJNb2RlIDMiKQpgYGAKCmBgYHtyLCBmaWcud2lkdGggPSA0LCBmaWcuYXNwID0gMX0KcGxvdF9VX2Z1bl9wcm9wKHN2ZDJfYWQsICJhZHVsdHMiLCB0cmFuc3Bvc2UgPSBUUlVFLCBlZmFfY29sb3JzID0gVFJVRSwgCiAgICAgICAgICAgICAgICBtb2RlcyA9IGMoIm1vZGVfMDEiLCAibW9kZV8wMiIpKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IEFkdWx0cyAoQXBwcm9hY2ggIzIpIiwKICAgICAgIHN1YnRpdGxlID0gIlU6IENhcGFjaXRpZXMgaW4gTW9kZXMgMSAmIDIiLAogICAgICAgeCA9ICJNb2RlIDEiLCB5ID0gIk1vZGUgMiIpCgpwbG90X1VfZnVuX3Byb3Aoc3ZkMl9hZCwgImFkdWx0cyIsIHRyYW5zcG9zZSA9IFRSVUUsIGVmYV9jb2xvcnMgPSBUUlVFLCAKICAgICAgICAgICAgICAgIG1vZGVzID0gYygibW9kZV8wMSIsICJtb2RlXzAzIikpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQWR1bHRzIChBcHByb2FjaCAjMikiLAogICAgICAgc3VidGl0bGUgPSAiVTogQ2FwYWNpdGllcyBpbiBNb2RlcyAxICYgMyIsCiAgICAgICB4ID0gIk1vZGUgMSIsIHkgPSAiTW9kZSAzIikKCnBsb3RfVV9mdW5fcHJvcChzdmQyX2FkLCAiYWR1bHRzIiwgdHJhbnNwb3NlID0gVFJVRSwgZWZhX2NvbG9ycyA9IFRSVUUsIAogICAgICAgICAgICAgICAgbW9kZXMgPSBjKCJtb2RlXzAyIiwgIm1vZGVfMDMiKSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBBZHVsdHMgKEFwcHJvYWNoICMyKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJVOiBDYXBhY2l0aWVzIGluIE1vZGVzIDIgJiAzIiwKICAgICAgIHggPSAiTW9kZSAyIiwgeSA9ICJNb2RlIDMiKQpgYGAKCgojIyMgQ2hpbGRyZW4sIDctOXkKCmBgYHtyfQpzdmQyXzc5IDwtIHN2ZChkXzc5ICU+JSBjb2x1bW5fdG9fcm93bmFtZXMoImNoYXJhY3RlciIpICU+JSB0KCksIAogICAgICAgICAgICAgICBucm93KGRfNzkpLCBucm93KGRfNzkpKQpgYGAKCiMjIyMgUmVjb25zdHJ1Y3RlZCBkYXRhCgpgYGB7ciwgZmlnLndpZHRoID0gMywgZmlnLmFzcCA9IDEuNDl9CnBsb3RfcmVjb25zdHJ1Y3RfZnVuKHN2ZDJfNzksICJjaGlsZHJlbiIsIFRSVUUpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQ2hpbGRyZW4sIDctOXkgKEFwcHJvYWNoICMyKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJSZWNvbnN0cnVjdGVkIGRhdGFzZXQ6IFN1bSBvZiBvdXRlciBwcm9kdWN0cyAoVSwgVikgbXVsdGlwbGllZCBieSBTIiwKICAgICAgIHggPSAiIiwgeSA9ICIiKQpgYGAKCiMjIyMgRmVhdHVyZSB2ZWN0b3JzCgpgYGB7ciwgZmlnLndpZHRoID0gMywgZmlnLmFzcCA9IDEuNDl9CnBsb3RfVV9mdW4oc3ZkMl83OSwgImNoaWxkcmVuIiwgdHJhbnNwb3NlID0gVFJVRSwgbXVsdGlwbHkgPSBGQUxTRSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBDaGlsZHJlbiwgNy05eSAoQXBwcm9hY2ggIzIpIiwKICAgICAgIHN1YnRpdGxlID0gIlU6IEZlYXR1cmUgdmVjdG9ycyAoYnkgbW9kZSkiLAogICAgICAgIyBzdWJ0aXRsZSA9ICJVIHggUzogRmVhdHVyZSB2ZWN0b3JzIG11bHRpcGxpZWQgYnkgc2luZ3VsYXIgdmFsdWUgKGJ5IG1vZGUpIiwKICAgICAgIHggPSAiIiwgeSA9ICIiKQpgYGAKCiMjIyMgU2luZ3VsYXIgdmFsdWVzCgpgYGB7ciwgZmlnLndpZHRoID0gMywgZmlnLmFzcCA9IDF9CnBsb3RfU19mdW4oc3ZkMl83OSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBDaGlsZHJlbiwgNy05eSAoQXBwcm9hY2ggIzIpIiwKICAgICAgIHN1YnRpdGxlID0gIlM6IFNpbmd1bGFyIHZhbHVlcyAoYnkgbW9kZSkiLAogICAgICAgeCA9ICIiLCB5ID0gIiIpCmBgYAoKIyMjIyBJdGVtIHZlY3RvcnMKCmBgYHtyLCBmaWcud2lkdGggPSAzLCBmaWcuYXNwID0gMX0KcGxvdF9WX2Z1bihzdmQyXzc5LCAiY2hpbGRyZW4iLCB0cmFuc3Bvc2UgPSBUUlVFLCBtdWx0aXBseSA9IEZBTFNFKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IENoaWxkcmVuLCA3LTl5IChBcHByb2FjaCAjMikiLAogICAgICAgc3VidGl0bGUgPSAiVjogSXRlbSB2ZWN0b3JzIChieSBtb2RlKSIsCiAgICAgICAjIHN1YnRpdGxlID0gIlYgeCBTOiBJdGVtIHZlY3RvcnMgbXVsdGlwbGllZCBieSBzaW5ndWxhciB2YWx1ZSAoYnkgbW9kZSkiLAogICAgICAgeCA9ICIiLCB5ID0gIiIpCmBgYAoKIyMjIyBQbG90dGluZyBpbiBkaW1lbnNpb25zCgpgYGB7ciwgZmlnLndpZHRoID0gNCwgZmlnLmFzcCA9IDF9CnBsb3RfVl9mdW5faXRlbShzdmQyXzc5LCAiY2hpbGRyZW4iLCB0cmFuc3Bvc2UgPSBUUlVFLAogICAgICAgICAgICAgICAgbW9kZXMgPSBjKCJtb2RlXzAxIiwgIm1vZGVfMDIiKSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBDaGlsZHJlbiwgNy05eSAoQXBwcm9hY2ggIzIpIiwKICAgICAgIHN1YnRpdGxlID0gIlY6IENoYXJhY3RlcnMgaW4gTW9kZXMgMSAmIDIiLAogICAgICAgeCA9ICJNb2RlIDEiLCB5ID0gIk1vZGUgMiIpCgpwbG90X1ZfZnVuX2l0ZW0oc3ZkMl83OSwgImNoaWxkcmVuIiwgdHJhbnNwb3NlID0gVFJVRSwKICAgICAgICAgICAgICAgIG1vZGVzID0gYygibW9kZV8wMSIsICJtb2RlXzAzIikpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQ2hpbGRyZW4sIDctOXkgKEFwcHJvYWNoICMyKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJWOiBDaGFyYWN0ZXJzIGluIE1vZGVzIDEgJiAzIiwKICAgICAgIHggPSAiTW9kZSAxIiwgeSA9ICJNb2RlIDMiKQoKcGxvdF9WX2Z1bl9pdGVtKHN2ZDJfNzksICJjaGlsZHJlbiIsIHRyYW5zcG9zZSA9IFRSVUUsCiAgICAgICAgICAgICAgICBtb2RlcyA9IGMoIm1vZGVfMDIiLCAibW9kZV8wMyIpKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IENoaWxkcmVuLCA3LTl5IChBcHByb2FjaCAjMikiLAogICAgICAgc3VidGl0bGUgPSAiVjogQ2hhcmFjdGVycyBpbiBNb2RlcyAyICYgMyIsCiAgICAgICB4ID0gIk1vZGUgMiIsIHkgPSAiTW9kZSAzIikKYGBgCgpgYGB7ciwgZmlnLndpZHRoID0gNCwgZmlnLmFzcCA9IDF9CnBsb3RfVV9mdW5fcHJvcChzdmQyXzc5LCAiY2hpbGRyZW4iLCB0cmFuc3Bvc2UgPSBUUlVFLCBlZmFfY29sb3JzID0gVFJVRSwKICAgICAgICAgICAgICAgIG1vZGVzID0gYygibW9kZV8wMSIsICJtb2RlXzAyIikpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQ2hpbGRyZW4sIDctOXkgKEFwcHJvYWNoICMyKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJVOiBDYXBhY2l0aWVzIGluIE1vZGVzIDEgJiAyIiwKICAgICAgIHggPSAiTW9kZSAxIiwgeSA9ICJNb2RlIDIiKQoKcGxvdF9VX2Z1bl9wcm9wKHN2ZDJfNzksICJjaGlsZHJlbiIsIHRyYW5zcG9zZSA9IFRSVUUsIGVmYV9jb2xvcnMgPSBUUlVFLAogICAgICAgICAgICAgICAgbW9kZXMgPSBjKCJtb2RlXzAxIiwgIm1vZGVfMDMiKSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBDaGlsZHJlbiwgNy05eSAoQXBwcm9hY2ggIzIpIiwKICAgICAgIHN1YnRpdGxlID0gIlU6IENhcGFjaXRpZXMgaW4gTW9kZXMgMSAmIDMiLAogICAgICAgeCA9ICJNb2RlIDEiLCB5ID0gIk1vZGUgMyIpCgpwbG90X1VfZnVuX3Byb3Aoc3ZkMl83OSwgImNoaWxkcmVuIiwgdHJhbnNwb3NlID0gVFJVRSwgZWZhX2NvbG9ycyA9IFRSVUUsCiAgICAgICAgICAgICAgICBtb2RlcyA9IGMoIm1vZGVfMDIiLCAibW9kZV8wMyIpKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IENoaWxkcmVuLCA3LTl5IChBcHByb2FjaCAjMikiLAogICAgICAgc3VidGl0bGUgPSAiVTogQ2FwYWNpdGllcyBpbiBNb2RlcyAyICYgMyIsCiAgICAgICB4ID0gIk1vZGUgMiIsIHkgPSAiTW9kZSAzIikKYGBgCgoKIyMjIENoaWxkcmVuLCA0LTZ5CgpgYGB7cn0Kc3ZkMl80NiA8LSBzdmQoZF80NiAlPiUgY29sdW1uX3RvX3Jvd25hbWVzKCJjaGFyYWN0ZXIiKSAlPiUgdCgpLCAKICAgICAgICAgICAgICAgbnJvdyhkXzQ2KSwgbnJvdyhkXzQ2KSkKYGBgCgojIyMjIFJlY29uc3RydWN0ZWQgZGF0YQoKYGBge3IsIGZpZy53aWR0aCA9IDMsIGZpZy5hc3AgPSAxLjQ5fQpwbG90X3JlY29uc3RydWN0X2Z1bihzdmQyXzQ2LCAiY2hpbGRyZW4iLCBUUlVFKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IENoaWxkcmVuLCA0LTZ5IChBcHByb2FjaCAjMikiLAogICAgICAgc3VidGl0bGUgPSAiUmVjb25zdHJ1Y3RlZCBkYXRhc2V0OiBTdW0gb2Ygb3V0ZXIgcHJvZHVjdHMgKFUsIFYpIG11bHRpcGxpZWQgYnkgUyIsCiAgICAgICB4ID0gIiIsIHkgPSAiIikKYGBgCgojIyMjIEZlYXR1cmUgdmVjdG9ycwoKYGBge3IsIGZpZy53aWR0aCA9IDMsIGZpZy5hc3AgPSAxLjQ5fQpwbG90X1VfZnVuKHN2ZDJfNDYsICJjaGlsZHJlbiIsIHRyYW5zcG9zZSA9IFRSVUUsIG11bHRpcGx5ID0gRkFMU0UpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQ2hpbGRyZW4sIDQtNnkgKEFwcHJvYWNoICMyKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJVOiBGZWF0dXJlIHZlY3RvcnMgKGJ5IG1vZGUpIiwKICAgICAgICMgc3VidGl0bGUgPSAiVSB4IFM6IEZlYXR1cmUgdmVjdG9ycyBtdWx0aXBsaWVkIGJ5IHNpbmd1bGFyIHZhbHVlIChieSBtb2RlKSIsCiAgICAgICB4ID0gIiIsIHkgPSAiIikKYGBgCgojIyMjIFNpbmd1bGFyIHZhbHVlcwoKYGBge3IsIGZpZy53aWR0aCA9IDMsIGZpZy5hc3AgPSAxfQpwbG90X1NfZnVuKHN2ZDJfNDYpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQ2hpbGRyZW4sIDQtNnkgKEFwcHJvYWNoICMyKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJTOiBTaW5ndWxhciB2YWx1ZXMgKGJ5IG1vZGUpIiwKICAgICAgIHggPSAiIiwgeSA9ICIiKQpgYGAKCiMjIyMgSXRlbSB2ZWN0b3JzCgpgYGB7ciwgZmlnLndpZHRoID0gMywgZmlnLmFzcCA9IDF9CnBsb3RfVl9mdW4oc3ZkMl80NiwgImNoaWxkcmVuIiwgdHJhbnNwb3NlID0gVFJVRSwgbXVsdGlwbHkgPSBGQUxTRSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBDaGlsZHJlbiwgNC02eSAoQXBwcm9hY2ggIzIpIiwKICAgICAgIHN1YnRpdGxlID0gIlY6IEl0ZW0gdmVjdG9ycyAoYnkgbW9kZSkiLAogICAgICAgIyBzdWJ0aXRsZSA9ICJWIHggUzogSXRlbSB2ZWN0b3JzIG11bHRpcGxpZWQgYnkgc2luZ3VsYXIgdmFsdWUgKGJ5IG1vZGUpIiwKICAgICAgIHggPSAiIiwgeSA9ICIiKQpgYGAKCiMjIyMgUGxvdHRpbmcgaW4gZGltZW5zaW9ucwoKYGBge3IsIGZpZy53aWR0aCA9IDQsIGZpZy5hc3AgPSAxfQpwbG90X1ZfZnVuX2l0ZW0oc3ZkMl80NiwgImNoaWxkcmVuIiwgdHJhbnNwb3NlID0gVFJVRSwgCiAgICAgICAgICAgICAgICBtb2RlcyA9IGMoIm1vZGVfMDEiLCAibW9kZV8wMiIpKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IENoaWxkcmVuLCA0LTZ5IChBcHByb2FjaCAjMikiLAogICAgICAgc3VidGl0bGUgPSAiVjogQ2hhcmFjdGVycyBpbiBNb2RlcyAxICYgMiIsCiAgICAgICB4ID0gIk1vZGUgMSIsIHkgPSAiTW9kZSAyIikKCnBsb3RfVl9mdW5faXRlbShzdmQyXzQ2LCAiY2hpbGRyZW4iLCB0cmFuc3Bvc2UgPSBUUlVFLCAKICAgICAgICAgICAgICAgIG1vZGVzID0gYygibW9kZV8wMSIsICJtb2RlXzAzIikpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQ2hpbGRyZW4sIDQtNnkgKEFwcHJvYWNoICMyKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJWOiBDaGFyYWN0ZXJzIGluIE1vZGVzIDEgJiAzIiwKICAgICAgIHggPSAiTW9kZSAxIiwgeSA9ICJNb2RlIDMiKQoKcGxvdF9WX2Z1bl9pdGVtKHN2ZDJfNDYsICJjaGlsZHJlbiIsIHRyYW5zcG9zZSA9IFRSVUUsIAogICAgICAgICAgICAgICAgbW9kZXMgPSBjKCJtb2RlXzAyIiwgIm1vZGVfMDMiKSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBDaGlsZHJlbiwgNC02eSAoQXBwcm9hY2ggIzIpIiwKICAgICAgIHN1YnRpdGxlID0gIlY6IENoYXJhY3RlcnMgaW4gTW9kZXMgMiAmIDMiLAogICAgICAgeCA9ICJNb2RlIDIiLCB5ID0gIk1vZGUgMyIpCmBgYAoKYGBge3IsIGZpZy53aWR0aCA9IDQsIGZpZy5hc3AgPSAxfQpwbG90X1VfZnVuX3Byb3Aoc3ZkMl80NiwgImNoaWxkcmVuIiwgdHJhbnNwb3NlID0gVFJVRSwgZWZhX2NvbG9ycyA9IFRSVUUsCiAgICAgICAgICAgICAgICBtb2RlcyA9IGMoIm1vZGVfMDEiLCAibW9kZV8wMiIpKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IENoaWxkcmVuLCA0LTZ5IChBcHByb2FjaCAjMikiLAogICAgICAgc3VidGl0bGUgPSAiVTogQ2FwYWNpdGllcyBpbiBNb2RlcyAxICYgMiIsCiAgICAgICB4ID0gIk1vZGUgMSIsIHkgPSAiTW9kZSAyIikKCnBsb3RfVV9mdW5fcHJvcChzdmQyXzQ2LCAiY2hpbGRyZW4iLCB0cmFuc3Bvc2UgPSBUUlVFLCBlZmFfY29sb3JzID0gVFJVRSwKICAgICAgICAgICAgICAgIG1vZGVzID0gYygibW9kZV8wMSIsICJtb2RlXzAzIikpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQ2hpbGRyZW4sIDQtNnkgKEFwcHJvYWNoICMyKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJVOiBDYXBhY2l0aWVzIGluIE1vZGVzIDEgJiAzIiwKICAgICAgIHggPSAiTW9kZSAxIiwgeSA9ICJNb2RlIDMiKQoKcGxvdF9VX2Z1bl9wcm9wKHN2ZDJfNDYsICJjaGlsZHJlbiIsIHRyYW5zcG9zZSA9IFRSVUUsIGVmYV9jb2xvcnMgPSBUUlVFLAogICAgICAgICAgICAgICAgbW9kZXMgPSBjKCJtb2RlXzAyIiwgIm1vZGVfMDMiKSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBDaGlsZHJlbiwgNC02eSAoQXBwcm9hY2ggIzIpIiwKICAgICAgIHN1YnRpdGxlID0gIlU6IENhcGFjaXRpZXMgaW4gTW9kZXMgMiAmIDMiLAogICAgICAgeCA9ICJNb2RlIDIiLCB5ID0gIk1vZGUgMyIpCmBgYAoKCiMjIyBDaGlsZHJlbiwgNC05eQoKYGBge3J9CnN2ZDJfNDkgPC0gc3ZkKGRfNzkgJT4lCiAgICAgICAgICAgICAgICAgbXV0YXRlKGNoYXJhY3RlciA9IHBhc3RlKGNoYXJhY3RlciwgIjc5Iiwgc2VwID0gIl8iKSkgJT4lCiAgICAgICAgICAgICAgICAgYmluZF9yb3dzKGRfNDYgJT4lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXV0YXRlKGNoYXJhY3RlciA9IHBhc3RlKGNoYXJhY3RlciwgIjQ2IiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcCA9ICJfIikpKSAlPiUgCiAgICAgICAgICAgICAgICAgY29sdW1uX3RvX3Jvd25hbWVzKCJjaGFyYWN0ZXIiKSAlPiUKICAgICAgICAgICAgICAgICB0KCksIAogICAgICAgICAgICAgICBucm93KGRfNzkpICsgbnJvdyhkXzQ2KSwgbnJvdyhkXzc5KSArIG5yb3coZF80NikpCmBgYAoKIyMjIyBSZWNvbnN0cnVjdGVkIGRhdGEKCmBgYHtyLCBmaWcud2lkdGggPSA0LCBmaWcuYXNwID0gMX0KcGxvdF9yZWNvbnN0cnVjdF9mdW4oc3ZkMl80OSwgdHJhbnNwb3NlID0gVFJVRSwgImNoaWxkcmVuX2NvbWJfY2hhciIpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQ2hpbGRyZW4sIDQtOXkgKEFwcHJvYWNoICMyKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJSZWNvbnN0cnVjdGVkIGRhdGFzZXQ6IFN1bSBvZiBvdXRlciBwcm9kdWN0cyAoVSwgVikgbXVsdGlwbGllZCBieSBTIiwKICAgICAgIHggPSAiIiwgeSA9ICIiKSArCiAgZ2VvbV92bGluZSh4aW50ZXJjZXB0ID0gOS41LCBzaXplID0gMSkKYGBgCgojIyMjIEZlYXR1cmUgdmVjdG9ycwoKYGBge3IsIGZpZy53aWR0aCA9IDMsIGZpZy5hc3AgPSAxfQpwbG90X1VfZnVuKHN2ZDJfNDksICJjaGlsZHJlbl9jb21iX2NoYXIiLCB0cmFuc3Bvc2UgPSBUUlVFLCBtdWx0aXBseSA9IEZBTFNFKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IENoaWxkcmVuLCA0LTl5IChBcHByb2FjaCAjMikiLAogICAgICAgc3VidGl0bGUgPSAiVTogRmVhdHVyZSB2ZWN0b3JzIChieSBtb2RlKSIsCiAgICAgICAjIHN1YnRpdGxlID0gIlUgeCBTOiBGZWF0dXJlIHZlY3RvcnMgbXVsdGlwbGllZCBieSBzaW5ndWxhciB2YWx1ZSAoYnkgbW9kZSkiLAogICAgICAgeCA9ICIiLCB5ID0gIiIpCmBgYAoKIyMjIyBTaW5ndWxhciB2YWx1ZXMKCmBgYHtyLCBmaWcud2lkdGggPSAzLCBmaWcuYXNwID0gMX0KcGxvdF9TX2Z1bihzdmQyXzQ5KSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IENoaWxkcmVuLCA0LTl5IChBcHByb2FjaCAjMikiLAogICAgICAgc3VidGl0bGUgPSAiUzogU2luZ3VsYXIgdmFsdWVzIChieSBtb2RlKSIsCiAgICAgICB4ID0gIiIsIHkgPSAiIikKYGBgCgojIyMjIEl0ZW0gdmVjdG9ycwoKYGBge3IsIGZpZy53aWR0aCA9IDMsIGZpZy5hc3AgPSAxfQpwbG90X1ZfZnVuKHN2ZDJfNDksICJjaGlsZHJlbl9jb21iX2NoYXIiLCB0cmFuc3Bvc2UgPSBUUlVFLCBtdWx0aXBseSA9IEZBTFNFKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IENoaWxkcmVuLCA0LTl5IChBcHByb2FjaCAjMikiLAogICAgICAgc3VidGl0bGUgPSAiVjogSXRlbSB2ZWN0b3JzIChieSBtb2RlKSIsCiAgICAgICAjIHN1YnRpdGxlID0gIlYgeCBTOiBJdGVtIHZlY3RvcnMgbXVsdGlwbGllZCBieSBzaW5ndWxhciB2YWx1ZSAoYnkgbW9kZSkiLAogICAgICAgeCA9ICIiLCB5ID0gIiIpICsKICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSA5LjUsIHNpemUgPSAxKQpgYGAKCiMjIyMgUGxvdHRpbmcgaW4gZGltZW5zaW9ucwoKYGBge3IsIGZpZy53aWR0aCA9IDQsIGZpZy5hc3AgPSAxfQp0ZW1wX3JlY3QgPC0gVl9mdW4oc3ZkMl80OSwgImNoaWxkcmVuX2NvbWJfY2hhciIsIHRyYW5zcG9zZSA9IFRSVUUpICU+JQogIG11dGF0ZShhZ2VfZ3JvdXAgPSBpZmVsc2UoZ3JlcGwoIjc5IiwgaXRlbSksICI3LTl5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShncmVwbCgiNDYiLCBpdGVtKSwgIjQtNnkiLCBOQSkpLAogICAgICAgICBpdGVtID0gZ3N1YigiXy4uJCIsICIiLCBpdGVtKSkgJT4lCiAgc3ByZWFkKG1vZGUsIHZhbHVlKSAlPiUKICBncm91cF9ieShhZ2VfZ3JvdXApICU+JQogIHN1bW1hcmlzZShtaW5fMDEgPSBtaW4obW9kZV8wMSksIG1heF8wMSA9IG1heChtb2RlXzAxKSwgCiAgICAgICAgICAgIG1pbl8wMiA9IG1pbihtb2RlXzAyKSwgbWF4XzAyID0gbWF4KG1vZGVfMDIpLAogICAgICAgICAgICBtaW5fMDMgPSBtaW4obW9kZV8wMyksIG1heF8wMyA9IG1heChtb2RlXzAzKSkgJT4lCiAgdW5ncm91cCgpICU+JQogIGRhdGEuZnJhbWUoKQoKVl9mdW4oc3ZkMl80OSwgImNoaWxkcmVuX2NvbWJfY2hhciIsIHRyYW5zcG9zZSA9IFRSVUUpICU+JQogIG11dGF0ZShhZ2VfZ3JvdXAgPSBpZmVsc2UoZ3JlcGwoIjc5IiwgaXRlbSksICI3LTl5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShncmVwbCgiNDYiLCBpdGVtKSwgIjQtNnkiLCBOQSkpLAogICAgICAgICBpdGVtID0gZ3N1YigiXy4uJCIsICIiLCBpdGVtKSkgJT4lCiAgc3ByZWFkKG1vZGUsIHZhbHVlKSAlPiUKICBnZ3Bsb3QoYWVzKHggPSBtb2RlXzAxLCB5ID0gbW9kZV8wMiwgbGFiZWwgPSBpdGVtLCBjb2xvciA9IGFnZV9ncm91cCkpICsKICBnZW9tX3JlY3QoZGF0YSA9IHRlbXBfcmVjdCwKICAgICAgICAgICAgYWVzKHggPSBOVUxMLCB5ID0gTlVMTCwgbGFiZWwgPSBOVUxMLAogICAgICAgICAgICAgICAgeG1pbiA9IG1pbl8wMSwgeG1heCA9IG1heF8wMSwgeW1pbiA9IG1pbl8wMiwgeW1heCA9IG1heF8wMiwKICAgICAgICAgICAgICAgIGNvbG9yID0gYWdlX2dyb3VwLCBmaWxsID0gYWdlX2dyb3VwLCBncm91cCA9IGFnZV9ncm91cCksIAogICAgICAgICAgICBhbHBoYSA9IDAuMDUpICsKICBnZW9tX3BvaW50KCkgKwogIHNjYWxlX3hfY29udGludW91cyhicmVha3MgPSBzZXEoLTEwMCwgMTAwLCAuMSkpICsKICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKC0xMDAsIDEwMCwgLjEpKSArCiAgZ2dyZXBlbDo6Z2VvbV90ZXh0X3JlcGVsKHNob3cubGVnZW5kID0gRiwgc2l6ZSA9IDMpICsKICB0aGVtZV9taW5pbWFsKCkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBDaGlsZHJlbiwgNC05eSAoQXBwcm9hY2ggIzIsIENvbWIuIE1ldGhvZCAjMSkiLAogICAgICAgc3VidGl0bGUgPSAiVjogQ2hhcmFjdGVycyBpbiBNb2RlcyAxICYgMiIsCiAgICAgICB4ID0gIk1vZGUgMSIsIHkgPSAiTW9kZSAyIiwgY29sb3IgPSAiQWdlIEdyb3VwIiwgZmlsbCA9ICJBZ2UgR3JvdXAiKQoKVl9mdW4oc3ZkMl80OSwgImNoaWxkcmVuX2NvbWJfY2hhciIsIHRyYW5zcG9zZSA9IFRSVUUpICU+JQogIG11dGF0ZShhZ2VfZ3JvdXAgPSBpZmVsc2UoZ3JlcGwoIjc5IiwgaXRlbSksICI3LTl5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShncmVwbCgiNDYiLCBpdGVtKSwgIjQtNnkiLCBOQSkpLAogICAgICAgICBpdGVtID0gZ3N1YigiXy4uJCIsICIiLCBpdGVtKSkgJT4lCiAgc3ByZWFkKG1vZGUsIHZhbHVlKSAlPiUKICBnZ3Bsb3QoYWVzKHggPSBtb2RlXzAxLCB5ID0gbW9kZV8wMywgbGFiZWwgPSBpdGVtLCBjb2xvciA9IGFnZV9ncm91cCkpICsKICBnZW9tX3JlY3QoZGF0YSA9IHRlbXBfcmVjdCwKICAgICAgICAgICAgYWVzKHggPSBOVUxMLCB5ID0gTlVMTCwgbGFiZWwgPSBOVUxMLAogICAgICAgICAgICAgICAgeG1pbiA9IG1pbl8wMSwgeG1heCA9IG1heF8wMSwgeW1pbiA9IG1pbl8wMywgeW1heCA9IG1heF8wMywKICAgICAgICAgICAgICAgIGNvbG9yID0gYWdlX2dyb3VwLCBmaWxsID0gYWdlX2dyb3VwLCBncm91cCA9IGFnZV9ncm91cCksIAogICAgICAgICAgICBhbHBoYSA9IDAuMDUpICsKICBnZW9tX3BvaW50KCkgKwogIHNjYWxlX3hfY29udGludW91cyhicmVha3MgPSBzZXEoLTEwMCwgMTAwLCAuMSkpICsKICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKC0xMDAsIDEwMCwgLjEpKSArCiAgZ2dyZXBlbDo6Z2VvbV90ZXh0X3JlcGVsKHNob3cubGVnZW5kID0gRiwgc2l6ZSA9IDMpICsKICB0aGVtZV9taW5pbWFsKCkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBDaGlsZHJlbiwgNC05eSAoQXBwcm9hY2ggIzIsIENvbWIuIE1ldGhvZCAjMSkiLAogICAgICAgc3VidGl0bGUgPSAiVjogQ2hhcmFjdGVycyBpbiBNb2RlcyAxICYgMyIsCiAgICAgICB4ID0gIk1vZGUgMSIsIHkgPSAiTW9kZSAzIiwgY29sb3IgPSAiQWdlIEdyb3VwIiwgZmlsbCA9ICJBZ2UgR3JvdXAiKQoKVl9mdW4oc3ZkMl80OSwgImNoaWxkcmVuX2NvbWJfY2hhciIsIHRyYW5zcG9zZSA9IFRSVUUpICU+JQogIG11dGF0ZShhZ2VfZ3JvdXAgPSBpZmVsc2UoZ3JlcGwoIjc5IiwgaXRlbSksICI3LTl5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShncmVwbCgiNDYiLCBpdGVtKSwgIjQtNnkiLCBOQSkpLAogICAgICAgICBpdGVtID0gZ3N1YigiXy4uJCIsICIiLCBpdGVtKSkgJT4lCiAgc3ByZWFkKG1vZGUsIHZhbHVlKSAlPiUKICBnZ3Bsb3QoYWVzKHggPSBtb2RlXzAyLCB5ID0gbW9kZV8wMywgbGFiZWwgPSBpdGVtLCBjb2xvciA9IGFnZV9ncm91cCkpICsKICBnZW9tX3JlY3QoZGF0YSA9IHRlbXBfcmVjdCwKICAgICAgICAgICAgYWVzKHggPSBOVUxMLCB5ID0gTlVMTCwgbGFiZWwgPSBOVUxMLAogICAgICAgICAgICAgICAgeG1pbiA9IG1pbl8wMiwgeG1heCA9IG1heF8wMiwgeW1pbiA9IG1pbl8wMywgeW1heCA9IG1heF8wMywKICAgICAgICAgICAgICAgIGNvbG9yID0gYWdlX2dyb3VwLCBmaWxsID0gYWdlX2dyb3VwLCBncm91cCA9IGFnZV9ncm91cCksIAogICAgICAgICAgICBhbHBoYSA9IDAuMDUpICsKICBnZW9tX3BvaW50KCkgKwogIHNjYWxlX3hfY29udGludW91cyhicmVha3MgPSBzZXEoLTEwMCwgMTAwLCAuMSkpICsKICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKC0xMDAsIDEwMCwgLjEpKSArCiAgZ2dyZXBlbDo6Z2VvbV90ZXh0X3JlcGVsKHNob3cubGVnZW5kID0gRiwgc2l6ZSA9IDMpICsKICB0aGVtZV9taW5pbWFsKCkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBDaGlsZHJlbiwgNC05eSAoQXBwcm9hY2ggIzIsIENvbWIuIE1ldGhvZCAjMSkiLAogICAgICAgc3VidGl0bGUgPSAiVjogQ2hhcmFjdGVycyBpbiBNb2RlcyAyICYgMyIsCiAgICAgICB4ID0gIk1vZGUgMiIsIHkgPSAiTW9kZSAzIiwgY29sb3IgPSAiQWdlIEdyb3VwIiwgZmlsbCA9ICJBZ2UgR3JvdXAiKQoKcm0odGVtcF9yZWN0KQpgYGAKCmBgYHtyLCBmaWcud2lkdGggPSA0LCBmaWcuYXNwID0gMX0KcGxvdF9VX2Z1bl9wcm9wKHN2ZDJfNDksICJjaGlsZHJlbl9jb21iX2NoYXIiLCB0cmFuc3Bvc2UgPSBUUlVFLCBlZmFfY29sb3JzID0gVFJVRSwKICAgICAgICAgICAgICAgIG1vZGVzID0gYygibW9kZV8wMSIsICJtb2RlXzAyIikpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQ2hpbGRyZW4sIDQtOXkgKEFwcHJvYWNoICMyKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJVOiBDYXBhY2l0aWVzIGluIE1vZGVzIDEgJiAyIiwKICAgICAgIHggPSAiTW9kZSAxIiwgeSA9ICJNb2RlIDIiKQoKcGxvdF9VX2Z1bl9wcm9wKHN2ZDJfNDksICJjaGlsZHJlbl9jb21iX2NoYXIiLCB0cmFuc3Bvc2UgPSBUUlVFLCBlZmFfY29sb3JzID0gVFJVRSwKICAgICAgICAgICAgICAgIG1vZGVzID0gYygibW9kZV8wMSIsICJtb2RlXzAzIikpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQ2hpbGRyZW4sIDQtOXkgKEFwcHJvYWNoICMyKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJVOiBDYXBhY2l0aWVzIGluIE1vZGVzIDEgJiAzIiwKICAgICAgIHggPSAiTW9kZSAxIiwgeSA9ICJNb2RlIDMiKQoKcGxvdF9VX2Z1bl9wcm9wKHN2ZDJfNDksICJjaGlsZHJlbl9jb21iX2NoYXIiLCB0cmFuc3Bvc2UgPSBUUlVFLCBlZmFfY29sb3JzID0gVFJVRSwKICAgICAgICAgICAgICAgIG1vZGVzID0gYygibW9kZV8wMiIsICJtb2RlXzAzIikpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQ2hpbGRyZW4sIDQtOXkgKEFwcHJvYWNoICMyKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJVOiBDYXBhY2l0aWVzIGluIE1vZGVzIDIgJiAzIiwKICAgICAgIHggPSAiTW9kZSAyIiwgeSA9ICJNb2RlIDMiKQpgYGAKCgojIEFwcHJvYWNoICMzCgpJbiBBcHByb2FjaCAjMyB3ZSBtZWFuLWNlbnRlciBieSBjYXBhY2l0eSwgd2l0aCBjaGFyYWN0ZXJzIGFzIHJvd3MgYW5kIGNhcGFjaXRpZXMgYXMgY29sdW1ucy4KCiMjIFJhdyBkYXRhIG1hdHJpeCB2aXN1YWxpemF0aW9ucyB7LnRhYnNldH0KCiMjIyBBZHVsdHMKCkluIHRoaXMgc3R1ZHksIDQzMSBVUyBhZHVsdHMgcmF0ZWQgMjEgY2hhcmFjdGVycyAoYmV0d2Vlbi1zdWJqZWN0cykgb24gNDAgY2FwYWNpdGllcyAod2l0aGluLXN1YmplY3RzKS4gKFNlZSBXZWlzbWFuLCBEd2VjaywgJiBNYXJrbWFuLCAyMDE3LCBfUE5BU18sIFN0dWR5IDQuKQoKYGBge3IsIGZpZy53aWR0aCA9IDQsIGZpZy5hc3AgPSAwLjY3fQpkX2FkICU+JQogIG1lYW5fY2VudF9mdW4oYnkgPSAiY2FwYWNpdHkiLCBhZ2VfZ3JvdXAgPSAiYWR1bHRzIikgJT4lCiAgZ2F0aGVyKGNhcGFjaXR5LCBtZWFuX2NlbnQsIC1jaGFyYWN0ZXIpICU+JQogIGdncGxvdChhZXMoeCA9IGNhcGFjaXR5LCB5ID0gY2hhcmFjdGVyLCBmaWxsID0gbWVhbl9jZW50KSkgKwogIGdlb21fdGlsZShjb2xvciA9ICJibGFjayIpICsKICBzY2FsZV9maWxsX2dyYWRpZW50KGxvdyA9ICJibGFjayIsIGhpZ2ggPSAid2hpdGUiLCAjIGxpbWl0cyA9IGMoLTYsIDYpLAogICAgICAgICAgICAgICAgICAgICAgZ3VpZGUgPSBndWlkZV9jb2xvcmJhcihiYXJoZWlnaHQgPSAxNSkpICsKICB0aGVtZV9taW5pbWFsKCkgKwogIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gOTAsIGhqdXN0ID0gMSwgdmp1c3QgPSAwLjUpKSArCiAgbGFicyh0aXRsZSA9ICJSYXcgZGF0YTogQWR1bHRzIiwKICAgICAgIHN1YnRpdGxlID0gIjIxIGNoYXJhY3RlcnMsIDQwIGNhcGFjaXRpZXMiLAogICAgICAgeCA9ICJDYXBhY2l0eSIsCiAgICAgICB5ID0gIkNoYXJhY3RlciIsCiAgICAgICBmaWxsID0gIk1lYW4gcmF0aW5nIikKYGBgCgojIyMgNy05eW8gY2hpbGRyZW4KCkluIHRoaXMgc3R1ZHksIDEyMyA3LSB0byA5LXllYXItb2xkIFVTIGNoaWxkcmVuIHJhdGVkIDkgY2hhcmFjdGVycyAoYmV0d2Vlbi1zdWJqZWN0cykgb24gMjAgY2FwYWNpdGllcyAod2l0aGluIHN1YmplY3RzKS4gKFNlZSBXZWlzbWFuLCBEd2VjaywgJiBNYXJrbWFuLCAyMDE4LCBfUHJvYy4gQ29nU2NpXy4pCgpgYGB7ciwgZmlnLndpZHRoID0gNCwgZmlnLmFzcCA9IDAuNjd9CmRfNzkgJT4lCiAgbWVhbl9jZW50X2Z1bihieSA9ICJjYXBhY2l0eSIsIGFnZV9ncm91cCA9ICJjaGlsZHJlbiIpICU+JQogIGdhdGhlcihjYXBhY2l0eSwgbWVhbl9jZW50LCAtY2hhcmFjdGVyKSAlPiUKICBnZ3Bsb3QoYWVzKHggPSBjYXBhY2l0eSwgeSA9IGNoYXJhY3RlciwgZmlsbCA9IG1lYW5fY2VudCkpICsKICBnZW9tX3RpbGUoY29sb3IgPSAiYmxhY2siKSArCiAgc2NhbGVfZmlsbF9ncmFkaWVudChsb3cgPSAiYmxhY2siLCBoaWdoID0gIndoaXRlIiwgIyBsaW1pdHMgPSBjKC0yLCAyKSwKICAgICAgICAgICAgICAgICAgICAgIGd1aWRlID0gZ3VpZGVfY29sb3JiYXIoYmFyaGVpZ2h0ID0gMTUpKSArCiAgdGhlbWVfbWluaW1hbCgpICsKICB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDkwLCBoanVzdCA9IDEsIHZqdXN0ID0gMC41KSkgKwogIGxhYnModGl0bGUgPSAiUmF3IGRhdGE6IDctIHRvIDkteWVhci1vbGQgY2hpbGRyZW4iLAogICAgICAgc3VidGl0bGUgPSAiOSBjaGFyYWN0ZXJzLCAyMCBjYXBhY2l0aWVzIiwKICAgICAgIHggPSAiQ2FwYWNpdHkiLAogICAgICAgeSA9ICJDaGFyYWN0ZXIiLAogICAgICAgZmlsbCA9ICJNZWFuIHJhdGluZyIpCmBgYAoKIyMjIDQtNnlvIGNoaWxkcmVuCgpJbiB0aGlzIHN0dWR5LCAxMjQgNC0gdG8gNi15ZWFyLW9sZCBVUyBjaGlsZHJlbiByYXRlZCA5IGNoYXJhY3RlcnMgKGJldHdlZW4tc3ViamVjdHMpIG9uIDIwIGNhcGFjaXRpZXMgKHdpdGhpbiBzdWJqZWN0cykuIChTZWUgV2Vpc21hbiwgRHdlY2ssICYgTWFya21hbiwgMjAxOCwgX1Byb2MuIENvZ1NjaV8uKQoKYGBge3IsIGZpZy53aWR0aCA9IDQsIGZpZy5hc3AgPSAwLjY3fQpkXzQ2ICU+JQogIG1lYW5fY2VudF9mdW4oYnkgPSAiY2FwYWNpdHkiLCBhZ2VfZ3JvdXAgPSAiY2hpbGRyZW4iKSAlPiUKICBnYXRoZXIoY2FwYWNpdHksIG1lYW5fY2VudCwgLWNoYXJhY3RlcikgJT4lCiAgZ2dwbG90KGFlcyh4ID0gY2FwYWNpdHksIHkgPSBjaGFyYWN0ZXIsIGZpbGwgPSBtZWFuX2NlbnQpKSArCiAgZ2VvbV90aWxlKGNvbG9yID0gImJsYWNrIikgKwogIHNjYWxlX2ZpbGxfZ3JhZGllbnQobG93ID0gImJsYWNrIiwgaGlnaCA9ICJ3aGl0ZSIsICMgbGltaXRzID0gYygtMiwgMiksCiAgICAgICAgICAgICAgICAgICAgICBndWlkZSA9IGd1aWRlX2NvbG9yYmFyKGJhcmhlaWdodCA9IDE1KSkgKwogIHRoZW1lX21pbmltYWwoKSArCiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA5MCwgaGp1c3QgPSAxLCB2anVzdCA9IDAuNSkpICsKICBsYWJzKHRpdGxlID0gIlJhdyBkYXRhOiA0LSB0byA2LXllYXItb2xkIGNoaWxkcmVuIiwKICAgICAgIHN1YnRpdGxlID0gIjkgY2hhcmFjdGVycywgMjAgY2FwYWNpdGllcyIsCiAgICAgICB4ID0gIkNhcGFjaXR5IiwKICAgICAgIHkgPSAiQ2hhcmFjdGVyIiwKICAgICAgIGZpbGwgPSAiTWVhbiByYXRpbmciKQpgYGAKCgojIyBTVkQgey50YWJzZXR9CgojIyMgQWR1bHRzCgpgYGB7cn0Kc3ZkM19hZCA8LSBzdmQoZF9hZCAlPiUKICAgICAgICAgICAgICAgICBtZWFuX2NlbnRfZnVuKCJjYXBhY2l0eSIsIGFnZV9ncm91cCA9ICJhZHVsdHMiKSAlPiUKICAgICAgICAgICAgICAgICBjb2x1bW5fdG9fcm93bmFtZXMoImNoYXJhY3RlciIpLAogICAgICAgICAgICAgICBucm93KGRfYWQpLCBucm93KGRfYWQpKQpgYGAKCiMjIyMgUmVjb25zdHJ1Y3RlZCBkYXRhCgpgYGB7ciwgZmlnLndpZHRoID0gNCwgZmlnLmFzcCA9IDAuNjd9CnBsb3RfcmVjb25zdHJ1Y3RfZnVuKHN2ZDNfYWQsIHRyYW5zcG9zZSA9IEZBTFNFLCAiYWR1bHRzIikgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBBZHVsdHMgKEFwcHJvYWNoICMzKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJSZWNvbnN0cnVjdGVkIGRhdGFzZXQ6IFN1bSBvZiBvdXRlciBwcm9kdWN0cyAoVSwgVikgbXVsdGlwbGllZCBieSBTIiwKICAgICAgIHggPSAiIiwgeSA9ICIiKQpgYGAKCiMjIyMgRmVhdHVyZSB2ZWN0b3JzCgpgYGB7ciwgZmlnLndpZHRoID0gMywgZmlnLmFzcCA9IDF9CnBsb3RfVV9mdW4oc3ZkM19hZCwgImFkdWx0cyIsIHRyYW5zcG9zZSA9IEZBTFNFLCBtdWx0aXBseSA9IEZBTFNFKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IEFkdWx0cyAoQXBwcm9hY2ggIzMpIiwKICAgICAgIHN1YnRpdGxlID0gIlU6IEZlYXR1cmUgdmVjdG9ycyAoYnkgbW9kZSkiLAogICAgICAgIyBzdWJ0aXRsZSA9ICJVIHggUzogRmVhdHVyZSB2ZWN0b3JzIG11bHRpcGxpZWQgYnkgc2luZ3VsYXIgdmFsdWUgKGJ5IG1vZGUpIiwKICAgICAgIHggPSAiIiwgeSA9ICIiKQpgYGAKCiMjIyMgU2luZ3VsYXIgdmFsdWVzCgpgYGB7ciwgZmlnLndpZHRoID0gMywgZmlnLmFzcCA9IDF9CnBsb3RfU19mdW4oc3ZkM19hZCkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBBZHVsdHMgKEFwcHJvYWNoICMzKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJTOiBTaW5ndWxhciB2YWx1ZXMgKGJ5IG1vZGUpIiwKICAgICAgIHggPSAiIiwgeSA9ICIiKQpgYGAKCiMjIyMgSXRlbSB2ZWN0b3JzCgpgYGB7ciwgZmlnLndpZHRoID0gMywgZmlnLmFzcCA9IDEuNDl9CnBsb3RfVl9mdW4oc3ZkM19hZCwgImFkdWx0cyIsIHRyYW5zcG9zZSA9IEZBTFNFLCBtdWx0aXBseSA9IEZBTFNFKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IEFkdWx0cyAoQXBwcm9hY2ggIzMpIiwKICAgICAgIHN1YnRpdGxlID0gIlY6IEl0ZW0gdmVjdG9ycyAoYnkgbW9kZSkiLAogICAgICAgIyBzdWJ0aXRsZSA9ICJWIHggUzogSXRlbSB2ZWN0b3JzIG11bHRpcGxpZWQgYnkgc2luZ3VsYXIgdmFsdWUgKGJ5IG1vZGUpIiwKICAgICAgIHggPSAiIiwgeSA9ICIiKQpgYGAKCiMjIyMgUGxvdHRpbmcgaW4gZGltZW5zaW9ucwoKYGBge3IsIGZpZy53aWR0aCA9IDQsIGZpZy5hc3AgPSAxfQpwbG90X1ZfZnVuX2l0ZW0oc3ZkM19hZCwgImFkdWx0cyIsIHRyYW5zcG9zZSA9IEZBTFNFLCBlZmFfY29sb3JzID0gVFJVRSwKICAgICAgICAgICAgICAgIG1vZGVzID0gYygibW9kZV8wMSIsICJtb2RlXzAyIikpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQWR1bHRzIChBcHByb2FjaCAjMykiLAogICAgICAgc3VidGl0bGUgPSAiVjogQ2FwYWNpdGllcyBpbiBNb2RlcyAxICYgMiIsCiAgICAgICB4ID0gIk1vZGUgMSIsIHkgPSAiTW9kZSAyIikKCnBsb3RfVl9mdW5faXRlbShzdmQzX2FkLCAiYWR1bHRzIiwgdHJhbnNwb3NlID0gRkFMU0UsIGVmYV9jb2xvcnMgPSBUUlVFLAogICAgICAgICAgICAgICAgbW9kZXMgPSBjKCJtb2RlXzAxIiwgIm1vZGVfMDMiKSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBBZHVsdHMgKEFwcHJvYWNoICMzKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJWOiBDYXBhY2l0aWVzIGluIE1vZGVzIDEgJiAzIiwKICAgICAgIHggPSAiTW9kZSAxIiwgeSA9ICJNb2RlIDMiKQoKcGxvdF9WX2Z1bl9pdGVtKHN2ZDNfYWQsICJhZHVsdHMiLCB0cmFuc3Bvc2UgPSBGQUxTRSwgZWZhX2NvbG9ycyA9IFRSVUUsCiAgICAgICAgICAgICAgICBtb2RlcyA9IGMoIm1vZGVfMDIiLCAibW9kZV8wMyIpKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IEFkdWx0cyAoQXBwcm9hY2ggIzMpIiwKICAgICAgIHN1YnRpdGxlID0gIlY6IENhcGFjaXRpZXMgaW4gTW9kZXMgMiAmIDMiLAogICAgICAgeCA9ICJNb2RlIDIiLCB5ID0gIk1vZGUgMyIpCmBgYAoKYGBge3IsIGZpZy53aWR0aCA9IDQsIGZpZy5hc3AgPSAxfQpwbG90X1VfZnVuX3Byb3Aoc3ZkM19hZCwgImFkdWx0cyIsIHRyYW5zcG9zZSA9IEZBTFNFLAogICAgICAgICAgICAgICAgbW9kZXMgPSBjKCJtb2RlXzAxIiwgIm1vZGVfMDIiKSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBBZHVsdHMgKEFwcHJvYWNoICMzKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJVOiBDaGFyYWN0ZXJzIGluIE1vZGVzIDEgJiAyIiwKICAgICAgIHggPSAiTW9kZSAxIiwgeSA9ICJNb2RlIDIiKQoKcGxvdF9VX2Z1bl9wcm9wKHN2ZDNfYWQsICJhZHVsdHMiLCB0cmFuc3Bvc2UgPSBGQUxTRSwgCiAgICAgICAgICAgICAgICBtb2RlcyA9IGMoIm1vZGVfMDEiLCAibW9kZV8wMyIpKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IEFkdWx0cyAoQXBwcm9hY2ggIzMpIiwKICAgICAgIHN1YnRpdGxlID0gIlU6IENoYXJhY3RlcnMgaW4gTW9kZXMgMSAmIDMiLAogICAgICAgeCA9ICJNb2RlIDEiLCB5ID0gIk1vZGUgMyIpCgpwbG90X1VfZnVuX3Byb3Aoc3ZkM19hZCwgImFkdWx0cyIsIHRyYW5zcG9zZSA9IEZBTFNFLCAKICAgICAgICAgICAgICAgIG1vZGVzID0gYygibW9kZV8wMiIsICJtb2RlXzAzIikpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQWR1bHRzIChBcHByb2FjaCAjMykiLAogICAgICAgc3VidGl0bGUgPSAiVTogQ2hhcmFjdGVycyBpbiBNb2RlcyAyICYgMyIsCiAgICAgICB4ID0gIk1vZGUgMiIsIHkgPSAiTW9kZSAzIikKYGBgCgoKIyMjIENoaWxkcmVuLCA3LTl5CgpgYGB7cn0Kc3ZkM183OSA8LSBzdmQoZF83OSAlPiUKICAgICAgICAgICAgICAgICBtZWFuX2NlbnRfZnVuKCJjYXBhY2l0eSIsIGFnZV9ncm91cCA9ICJjaGlsZHJlbiIpICU+JQogICAgICAgICAgICAgICAgIGNvbHVtbl90b19yb3duYW1lcygiY2hhcmFjdGVyIiksCiAgICAgICAgICAgICAgIG5yb3coZF83OSksIG5yb3coZF83OSkpCmBgYAoKIyMjIyBSZWNvbnN0cnVjdGVkIGRhdGEKCmBgYHtyLCBmaWcud2lkdGggPSA0LCBmaWcuYXNwID0gMC42N30KcGxvdF9yZWNvbnN0cnVjdF9mdW4oc3ZkM183OSwgdHJhbnNwb3NlID0gRkFMU0UsICJjaGlsZHJlbiIpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQ2hpbGRyZW4sIDctOXkgKEFwcHJvYWNoICMzKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJSZWNvbnN0cnVjdGVkIGRhdGFzZXQ6IFN1bSBvZiBvdXRlciBwcm9kdWN0cyAoVSwgVikgbXVsdGlwbGllZCBieSBTIiwKICAgICAgIHggPSAiIiwgeSA9ICIiKQpgYGAKCiMjIyMgRmVhdHVyZSB2ZWN0b3JzCgpgYGB7ciwgZmlnLndpZHRoID0gMywgZmlnLmFzcCA9IDF9CnBsb3RfVV9mdW4oc3ZkM183OSwgImNoaWxkcmVuIiwgdHJhbnNwb3NlID0gRkFMU0UsIG11bHRpcGx5ID0gRkFMU0UpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQ2hpbGRyZW4sIDctOXkgKEFwcHJvYWNoICMzKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJVOiBGZWF0dXJlIHZlY3RvcnMgKGJ5IG1vZGUpIiwKICAgICAgICMgc3VidGl0bGUgPSAiVSB4IFM6IEZlYXR1cmUgdmVjdG9ycyBtdWx0aXBsaWVkIGJ5IHNpbmd1bGFyIHZhbHVlIChieSBtb2RlKSIsCiAgICAgICB4ID0gIiIsIHkgPSAiIikKYGBgCgojIyMjIFNpbmd1bGFyIHZhbHVlcwoKYGBge3IsIGZpZy53aWR0aCA9IDMsIGZpZy5hc3AgPSAxfQpwbG90X1NfZnVuKHN2ZDNfNzkpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQ2hpbGRyZW4sIDctOXkgKEFwcHJvYWNoICMzKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJTOiBTaW5ndWxhciB2YWx1ZXMgKGJ5IG1vZGUpIiwKICAgICAgIHggPSAiIiwgeSA9ICIiKQpgYGAKCiMjIyMgSXRlbSB2ZWN0b3JzCgpgYGB7ciwgZmlnLndpZHRoID0gMywgZmlnLmFzcCA9IDEuNDl9CnBsb3RfVl9mdW4oc3ZkM183OSwgImNoaWxkcmVuIiwgdHJhbnNwb3NlID0gRkFMU0UsIG11bHRpcGx5ID0gRkFMU0UpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQ2hpbGRyZW4sIDctOXkgKEFwcHJvYWNoICMzKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJWOiBJdGVtIHZlY3RvcnMgKGJ5IG1vZGUpIiwKICAgICAgICMgc3VidGl0bGUgPSAiViB4IFM6IEl0ZW0gdmVjdG9ycyBtdWx0aXBsaWVkIGJ5IHNpbmd1bGFyIHZhbHVlIChieSBtb2RlKSIsCiAgICAgICB4ID0gIiIsIHkgPSAiIikKYGBgCgojIyMjIFBsb3R0aW5nIGluIGRpbWVuc2lvbnMKCmBgYHtyLCBmaWcud2lkdGggPSA0LCBmaWcuYXNwID0gMX0KcGxvdF9WX2Z1bl9pdGVtKHN2ZDNfNzksICJjaGlsZHJlbiIsIHRyYW5zcG9zZSA9IEZBTFNFLCBlZmFfY29sb3JzID0gVFJVRSwKICAgICAgICAgICAgICAgIG1vZGVzID0gYygibW9kZV8wMSIsICJtb2RlXzAyIikpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQ2hpbGRyZW4sIDctOXkgKEFwcHJvYWNoICMzKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJWOiBDYXBhY2l0aWVzIGluIE1vZGVzIDEgJiAyIiwKICAgICAgIHggPSAiTW9kZSAxIiwgeSA9ICJNb2RlIDIiKQoKcGxvdF9WX2Z1bl9pdGVtKHN2ZDNfNzksICJjaGlsZHJlbiIsIHRyYW5zcG9zZSA9IEZBTFNFLCBlZmFfY29sb3JzID0gVFJVRSwKICAgICAgICAgICAgICAgIG1vZGVzID0gYygibW9kZV8wMSIsICJtb2RlXzAzIikpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQ2hpbGRyZW4sIDctOXkgKEFwcHJvYWNoICMzKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJWOiBDYXBhY2l0aWVzIGluIE1vZGVzIDEgJiAzIiwKICAgICAgIHggPSAiTW9kZSAxIiwgeSA9ICJNb2RlIDMiKQoKcGxvdF9WX2Z1bl9pdGVtKHN2ZDNfNzksICJjaGlsZHJlbiIsIHRyYW5zcG9zZSA9IEZBTFNFLCBlZmFfY29sb3JzID0gVFJVRSwKICAgICAgICAgICAgICAgIG1vZGVzID0gYygibW9kZV8wMiIsICJtb2RlXzAzIikpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQ2hpbGRyZW4sIDctOXkgKEFwcHJvYWNoICMzKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJWOiBDYXBhY2l0aWVzIGluIE1vZGVzIDIgJiAzIiwKICAgICAgIHggPSAiTW9kZSAyIiwgeSA9ICJNb2RlIDMiKQpgYGAKCmBgYHtyLCBmaWcud2lkdGggPSA0LCBmaWcuYXNwID0gMX0KcGxvdF9VX2Z1bl9wcm9wKHN2ZDNfNzksICJjaGlsZHJlbiIsIHRyYW5zcG9zZSA9IEZBTFNFLAogICAgICAgICAgICAgICAgbW9kZXMgPSBjKCJtb2RlXzAxIiwgIm1vZGVfMDIiKSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBDaGlsZHJlbiwgNy05eSAoQXBwcm9hY2ggIzMpIiwKICAgICAgIHN1YnRpdGxlID0gIlU6IENoYXJhY3RlcnMgaW4gTW9kZXMgMSAmIDIiLAogICAgICAgeCA9ICJNb2RlIDEiLCB5ID0gIk1vZGUgMiIpCgpwbG90X1VfZnVuX3Byb3Aoc3ZkM183OSwgImNoaWxkcmVuIiwgdHJhbnNwb3NlID0gRkFMU0UsIAogICAgICAgICAgICAgICAgbW9kZXMgPSBjKCJtb2RlXzAxIiwgIm1vZGVfMDMiKSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBDaGlsZHJlbiwgNy05eSAoQXBwcm9hY2ggIzMpIiwKICAgICAgIHN1YnRpdGxlID0gIlU6IENoYXJhY3RlcnMgaW4gTW9kZXMgMSAmIDMiLAogICAgICAgeCA9ICJNb2RlIDEiLCB5ID0gIk1vZGUgMyIpCgpwbG90X1VfZnVuX3Byb3Aoc3ZkM183OSwgImNoaWxkcmVuIiwgdHJhbnNwb3NlID0gRkFMU0UsIAogICAgICAgICAgICAgICAgbW9kZXMgPSBjKCJtb2RlXzAyIiwgIm1vZGVfMDMiKSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBDaGlsZHJlbiwgNy05eSAoQXBwcm9hY2ggIzMpIiwKICAgICAgIHN1YnRpdGxlID0gIlU6IENoYXJhY3RlcnMgaW4gTW9kZXMgMiAmIDMiLAogICAgICAgeCA9ICJNb2RlIDIiLCB5ID0gIk1vZGUgMyIpCmBgYAoKCiMjIyBDaGlsZHJlbiwgNC02eQoKYGBge3J9CnN2ZDNfNDYgPC0gc3ZkKGRfNDYgJT4lCiAgICAgICAgICAgICAgICAgbWVhbl9jZW50X2Z1bigiY2FwYWNpdHkiLCBhZ2VfZ3JvdXAgPSAiY2hpbGRyZW4iKSAlPiUKICAgICAgICAgICAgICAgICBjb2x1bW5fdG9fcm93bmFtZXMoImNoYXJhY3RlciIpLAogICAgICAgICAgICAgICBucm93KGRfNDYpLCBucm93KGRfNDYpKQpgYGAKCiMjIyMgUmVjb25zdHJ1Y3RlZCBkYXRhCgpgYGB7ciwgZmlnLndpZHRoID0gNCwgZmlnLmFzcCA9IDAuNjd9CnBsb3RfcmVjb25zdHJ1Y3RfZnVuKHN2ZDNfNDYsIHRyYW5zcG9zZSA9IEZBTFNFLCAiY2hpbGRyZW4iKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IENoaWxkcmVuLCA0LTZ5IChBcHByb2FjaCAjMykiLAogICAgICAgc3VidGl0bGUgPSAiUmVjb25zdHJ1Y3RlZCBkYXRhc2V0OiBTdW0gb2Ygb3V0ZXIgcHJvZHVjdHMgKFUsIFYpIG11bHRpcGxpZWQgYnkgUyIsCiAgICAgICB4ID0gIiIsIHkgPSAiIikKYGBgCgojIyMjIEZlYXR1cmUgdmVjdG9ycwoKYGBge3IsIGZpZy53aWR0aCA9IDMsIGZpZy5hc3AgPSAxfQpwbG90X1VfZnVuKHN2ZDNfNDYsICJjaGlsZHJlbiIsIHRyYW5zcG9zZSA9IEZBTFNFLCBtdWx0aXBseSA9IEZBTFNFKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IENoaWxkcmVuLCA0LTZ5IChBcHByb2FjaCAjMykiLAogICAgICAgc3VidGl0bGUgPSAiVTogRmVhdHVyZSB2ZWN0b3JzIChieSBtb2RlKSIsCiAgICAgICAjIHN1YnRpdGxlID0gIlUgeCBTOiBGZWF0dXJlIHZlY3RvcnMgbXVsdGlwbGllZCBieSBzaW5ndWxhciB2YWx1ZSAoYnkgbW9kZSkiLAogICAgICAgeCA9ICIiLCB5ID0gIiIpCmBgYAoKIyMjIyBTaW5ndWxhciB2YWx1ZXMKCmBgYHtyLCBmaWcud2lkdGggPSAzLCBmaWcuYXNwID0gMX0KcGxvdF9TX2Z1bihzdmQzXzQ2KSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IENoaWxkcmVuLCA0LTZ5IChBcHByb2FjaCAjMykiLAogICAgICAgc3VidGl0bGUgPSAiUzogU2luZ3VsYXIgdmFsdWVzIChieSBtb2RlKSIsCiAgICAgICB4ID0gIiIsIHkgPSAiIikKYGBgCgojIyMjIEl0ZW0gdmVjdG9ycwoKYGBge3IsIGZpZy53aWR0aCA9IDMsIGZpZy5hc3AgPSAxLjQ5fQpwbG90X1ZfZnVuKHN2ZDNfNDYsICJjaGlsZHJlbiIsIHRyYW5zcG9zZSA9IEZBTFNFLCBtdWx0aXBseSA9IEZBTFNFKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IENoaWxkcmVuLCA0LTZ5IChBcHByb2FjaCAjMykiLAogICAgICAgc3VidGl0bGUgPSAiVjogSXRlbSB2ZWN0b3JzIChieSBtb2RlKSIsCiAgICAgICAjIHN1YnRpdGxlID0gIlYgeCBTOiBJdGVtIHZlY3RvcnMgbXVsdGlwbGllZCBieSBzaW5ndWxhciB2YWx1ZSAoYnkgbW9kZSkiLAogICAgICAgeCA9ICIiLCB5ID0gIiIpCmBgYAoKIyMjIyBQbG90dGluZyBpbiBkaW1lbnNpb25zCgpgYGB7ciwgZmlnLndpZHRoID0gNCwgZmlnLmFzcCA9IDF9CnBsb3RfVl9mdW5faXRlbShzdmQzXzQ2LCAiY2hpbGRyZW4iLCB0cmFuc3Bvc2UgPSBGQUxTRSwgZWZhX2NvbG9ycyA9IFRSVUUsCiAgICAgICAgICAgICAgICBtb2RlcyA9IGMoIm1vZGVfMDEiLCAibW9kZV8wMiIpKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IENoaWxkcmVuLCA0LTZ5IChBcHByb2FjaCAjMykiLAogICAgICAgc3VidGl0bGUgPSAiVjogQ2FwYWNpdGllcyBpbiBNb2RlcyAxICYgMiIsCiAgICAgICB4ID0gIk1vZGUgMSIsIHkgPSAiTW9kZSAyIikKCnBsb3RfVl9mdW5faXRlbShzdmQzXzQ2LCAiY2hpbGRyZW4iLCB0cmFuc3Bvc2UgPSBGQUxTRSwgZWZhX2NvbG9ycyA9IFRSVUUsCiAgICAgICAgICAgICAgICBtb2RlcyA9IGMoIm1vZGVfMDEiLCAibW9kZV8wMyIpKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IENoaWxkcmVuLCA0LTZ5IChBcHByb2FjaCAjMykiLAogICAgICAgc3VidGl0bGUgPSAiVjogQ2FwYWNpdGllcyBpbiBNb2RlcyAxICYgMyIsCiAgICAgICB4ID0gIk1vZGUgMSIsIHkgPSAiTW9kZSAzIikKCnBsb3RfVl9mdW5faXRlbShzdmQzXzQ2LCAiY2hpbGRyZW4iLCB0cmFuc3Bvc2UgPSBGQUxTRSwgZWZhX2NvbG9ycyA9IFRSVUUsCiAgICAgICAgICAgICAgICBtb2RlcyA9IGMoIm1vZGVfMDIiLCAibW9kZV8wMyIpKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IENoaWxkcmVuLCA0LTZ5IChBcHByb2FjaCAjMykiLAogICAgICAgc3VidGl0bGUgPSAiVjogQ2FwYWNpdGllcyBpbiBNb2RlcyAyICYgMyIsCiAgICAgICB4ID0gIk1vZGUgMiIsIHkgPSAiTW9kZSAzIikKYGBgCgpgYGB7ciwgZmlnLndpZHRoID0gNCwgZmlnLmFzcCA9IDF9CnBsb3RfVV9mdW5fcHJvcChzdmQzXzQ2LCAiY2hpbGRyZW4iLCB0cmFuc3Bvc2UgPSBGQUxTRSwKICAgICAgICAgICAgICAgIG1vZGVzID0gYygibW9kZV8wMSIsICJtb2RlXzAyIikpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQ2hpbGRyZW4sIDQtNnkgKEFwcHJvYWNoICMzKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJVOiBDaGFyYWN0ZXJzIGluIE1vZGVzIDEgJiAyIiwKICAgICAgIHggPSAiTW9kZSAxIiwgeSA9ICJNb2RlIDIiKQoKcGxvdF9VX2Z1bl9wcm9wKHN2ZDNfNDYsICJjaGlsZHJlbiIsIHRyYW5zcG9zZSA9IEZBTFNFLCAKICAgICAgICAgICAgICAgIG1vZGVzID0gYygibW9kZV8wMSIsICJtb2RlXzAzIikpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQ2hpbGRyZW4sIDQtNnkgKEFwcHJvYWNoICMzKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJVOiBDaGFyYWN0ZXJzIGluIE1vZGVzIDEgJiAzIiwKICAgICAgIHggPSAiTW9kZSAxIiwgeSA9ICJNb2RlIDMiKQoKcGxvdF9VX2Z1bl9wcm9wKHN2ZDNfNDYsICJjaGlsZHJlbiIsIHRyYW5zcG9zZSA9IEZBTFNFLCAKICAgICAgICAgICAgICAgIG1vZGVzID0gYygibW9kZV8wMiIsICJtb2RlXzAzIikpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQ2hpbGRyZW4sIDQtNnkgKEFwcHJvYWNoICMzKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJVOiBDaGFyYWN0ZXJzIGluIE1vZGVzIDIgJiAzIiwKICAgICAgIHggPSAiTW9kZSAyIiwgeSA9ICJNb2RlIDMiKQpgYGAKCgojIyMgQ2hpbGRyZW4sIDQtOXkKCmBgYHtyfQpzdmQzXzQ5IDwtIHN2ZChkXzc5ICU+JQogICAgICAgICAgICAgICAgIG11dGF0ZShjaGFyYWN0ZXIgPSBwYXN0ZShjaGFyYWN0ZXIsICI3OSIsIHNlcCA9ICJfIikpICU+JQogICAgICAgICAgICAgICAgIGJpbmRfcm93cyhkXzQ2ICU+JQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11dGF0ZShjaGFyYWN0ZXIgPSBwYXN0ZShjaGFyYWN0ZXIsICI0NiIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXAgPSAiXyIpKSkgJT4lIAogICAgICAgICAgICAgICAgIG1lYW5fY2VudF9mdW4oImNhcGFjaXR5IiwgYWdlX2dyb3VwID0gImNoaWxkcmVuIikgJT4lCiAgICAgICAgICAgICAgICAgY29sdW1uX3RvX3Jvd25hbWVzKCJjaGFyYWN0ZXIiKSwgCiAgICAgICAgICAgICAgIG5yb3coZF83OSkgKyBucm93KGRfNDYpLCBucm93KGRfNzkpICsgbnJvdyhkXzQ2KSkKYGBgCgojIyMjIFJlY29uc3RydWN0ZWQgZGF0YQoKYGBge3IsIGZpZy53aWR0aCA9IDQsIGZpZy5hc3AgPSAxfQpwbG90X3JlY29uc3RydWN0X2Z1bihzdmQzXzQ5LCB0cmFuc3Bvc2UgPSBGQUxTRSwgImNoaWxkcmVuX2NvbWJfY2hhciIpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQ2hpbGRyZW4sIDQtOXkgKEFwcHJvYWNoICMzKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJSZWNvbnN0cnVjdGVkIGRhdGFzZXQ6IFN1bSBvZiBvdXRlciBwcm9kdWN0cyAoVSwgVikgbXVsdGlwbGllZCBieSBTIiwKICAgICAgIHggPSAiIiwgeSA9ICIiKSArCiAgZ2VvbV9obGluZSh5aW50ZXJjZXB0ID0gOS41LCBzaXplID0gMSkKYGBgCgojIyMjIEZlYXR1cmUgdmVjdG9ycwoKYGBge3IsIGZpZy53aWR0aCA9IDMsIGZpZy5hc3AgPSAxfQpwbG90X1VfZnVuKHN2ZDNfNDksICJjaGlsZHJlbl9jb21iX2NoYXIiLCB0cmFuc3Bvc2UgPSBGQUxTRSwgbXVsdGlwbHkgPSBGQUxTRSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBDaGlsZHJlbiwgNC05eSAoQXBwcm9hY2ggIzMpIiwKICAgICAgIHN1YnRpdGxlID0gIlU6IEZlYXR1cmUgdmVjdG9ycyAoYnkgbW9kZSkiLAogICAgICAgIyBzdWJ0aXRsZSA9ICJVIHggUzogRmVhdHVyZSB2ZWN0b3JzIG11bHRpcGxpZWQgYnkgc2luZ3VsYXIgdmFsdWUgKGJ5IG1vZGUpIiwKICAgICAgIHggPSAiIiwgeSA9ICIiKSArCiAgZ2VvbV9obGluZSh5aW50ZXJjZXB0ID0gOS41LCBzaXplID0gMSkKYGBgCgojIyMjIFNpbmd1bGFyIHZhbHVlcwoKYGBge3IsIGZpZy53aWR0aCA9IDMsIGZpZy5hc3AgPSAxfQpwbG90X1NfZnVuKHN2ZDNfNDkpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQ2hpbGRyZW4sIDQtOXkgKEFwcHJvYWNoICMzKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJTOiBTaW5ndWxhciB2YWx1ZXMgKGJ5IG1vZGUpIiwKICAgICAgIHggPSAiIiwgeSA9ICIiKQpgYGAKCiMjIyMgSXRlbSB2ZWN0b3JzCgpgYGB7ciwgZmlnLndpZHRoID0gMywgZmlnLmFzcCA9IDF9CnBsb3RfVl9mdW4oc3ZkM180OSwgImNoaWxkcmVuX2NvbWJfY2hhciIsIHRyYW5zcG9zZSA9IEZBTFNFLCBtdWx0aXBseSA9IEZBTFNFKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IENoaWxkcmVuLCA0LTl5IChBcHByb2FjaCAjMykiLAogICAgICAgc3VidGl0bGUgPSAiVjogSXRlbSB2ZWN0b3JzIChieSBtb2RlKSIsCiAgICAgICAjIHN1YnRpdGxlID0gIlYgeCBTOiBJdGVtIHZlY3RvcnMgbXVsdGlwbGllZCBieSBzaW5ndWxhciB2YWx1ZSAoYnkgbW9kZSkiLAogICAgICAgeCA9ICIiLCB5ID0gIiIpCmBgYAoKIyMjIyBQbG90dGluZyBpbiBkaW1lbnNpb25zCgpgYGB7ciwgZmlnLndpZHRoID0gNCwgZmlnLmFzcCA9IDF9CnBsb3RfVl9mdW5faXRlbShzdmQzXzQ5LCAiY2hpbGRyZW5fY29tYl9jaGFyIiwgZWZhX2NvbG9ycyA9IFRSVUUsIAogICAgICAgICAgICAgICAgbW9kZXMgPSBjKCJtb2RlXzAxIiwgIm1vZGVfMDIiKSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBDaGlsZHJlbiwgNC05eSAoQXBwcm9hY2ggIzMpIiwKICAgICAgIHN1YnRpdGxlID0gIlY6IENhcGFjaXRpZXMgaW4gTW9kZXMgMSAmIDIiLAogICAgICAgeCA9ICJNb2RlIDEiLCB5ID0gIk1vZGUgMiIpCgpwbG90X1ZfZnVuX2l0ZW0oc3ZkM180OSwgImNoaWxkcmVuX2NvbWJfY2hhciIsIGVmYV9jb2xvcnMgPSBUUlVFLAogICAgICAgICAgICAgICAgbW9kZXMgPSBjKCJtb2RlXzAxIiwgIm1vZGVfMDMiKSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBDaGlsZHJlbiwgNC05eSAoQXBwcm9hY2ggIzMpIiwKICAgICAgIHN1YnRpdGxlID0gIlY6IENhcGFjaXRpZXMgaW4gTW9kZXMgMSAmIDMiLAogICAgICAgeCA9ICJNb2RlIDEiLCB5ID0gIk1vZGUgMyIpCgpwbG90X1ZfZnVuX2l0ZW0oc3ZkM180OSwgImNoaWxkcmVuX2NvbWJfY2hhciIsIGVmYV9jb2xvcnMgPSBUUlVFLAogICAgICAgICAgICAgICAgbW9kZXMgPSBjKCJtb2RlXzAyIiwgIm1vZGVfMDMiKSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBDaGlsZHJlbiwgNC05eSAoQXBwcm9hY2ggIzMpIiwKICAgICAgIHN1YnRpdGxlID0gIlY6IENhcGFjaXRpZXMgaW4gTW9kZXMgMiAmIDMiLAogICAgICAgeCA9ICJNb2RlIDIiLCB5ID0gIk1vZGUgMyIpCmBgYAoKYGBge3IsIGZpZy53aWR0aCA9IDQsIGZpZy5hc3AgPSAxfQp0ZW1wX3JlY3QgPC0gVV9mdW4oc3ZkM180OSwgImNoaWxkcmVuX2NvbWJfY2hhciIpICU+JQogIG11dGF0ZShhZ2VfZ3JvdXAgPSBpZmVsc2UoZ3JlcGwoIjc5IiwgcHJvcGVydHkpLCAiNy05eSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoZ3JlcGwoIjQ2IiwgcHJvcGVydHkpLCAiNC02eSIsIE5BKSksCiAgICAgICAgIHByb3BlcnR5ID0gZ3N1YigiXy4uJCIsICIiLCBwcm9wZXJ0eSkpICU+JQogIHNwcmVhZChtb2RlLCB2YWx1ZSkgJT4lCiAgZ3JvdXBfYnkoYWdlX2dyb3VwKSAlPiUKICBzdW1tYXJpc2UobWluXzAxID0gbWluKG1vZGVfMDEpLCBtYXhfMDEgPSBtYXgobW9kZV8wMSksIAogICAgICAgICAgICBtaW5fMDIgPSBtaW4obW9kZV8wMiksIG1heF8wMiA9IG1heChtb2RlXzAyKSwKICAgICAgICAgICAgbWluXzAzID0gbWluKG1vZGVfMDMpLCBtYXhfMDMgPSBtYXgobW9kZV8wMykpICU+JQogIHVuZ3JvdXAoKSAlPiUKICBkYXRhLmZyYW1lKCkKClVfZnVuKHN2ZDNfNDksICJjaGlsZHJlbl9jb21iX2NoYXIiKSAlPiUKICBtdXRhdGUoYWdlX2dyb3VwID0gaWZlbHNlKGdyZXBsKCI3OSIsIHByb3BlcnR5KSwgIjctOXkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKGdyZXBsKCI0NiIsIHByb3BlcnR5KSwgIjQtNnkiLCBOQSkpLAogICAgICAgICBwcm9wZXJ0eSA9IGdzdWIoIl8uLiQiLCAiIiwgcHJvcGVydHkpKSAlPiUKICBzcHJlYWQobW9kZSwgdmFsdWUpICU+JQogIGdncGxvdChhZXMoeCA9IG1vZGVfMDEsIHkgPSBtb2RlXzAyLCBsYWJlbCA9IHByb3BlcnR5LCBjb2xvciA9IGFnZV9ncm91cCkpICsKICBnZW9tX3JlY3QoZGF0YSA9IHRlbXBfcmVjdCwKICAgICAgICAgICAgYWVzKHggPSBOVUxMLCB5ID0gTlVMTCwgbGFiZWwgPSBOVUxMLAogICAgICAgICAgICAgICAgeG1pbiA9IG1pbl8wMSwgeG1heCA9IG1heF8wMSwgeW1pbiA9IG1pbl8wMiwgeW1heCA9IG1heF8wMiwKICAgICAgICAgICAgICAgIGNvbG9yID0gYWdlX2dyb3VwLCBmaWxsID0gYWdlX2dyb3VwLCBncm91cCA9IGFnZV9ncm91cCksIAogICAgICAgICAgICBhbHBoYSA9IDAuMDUpICsKICBnZW9tX3BvaW50KCkgKwogIHNjYWxlX3hfY29udGludW91cyhicmVha3MgPSBzZXEoLTEwMCwgMTAwLCAuMSkpICsKICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKC0xMDAsIDEwMCwgLjEpKSArCiAgZ2dyZXBlbDo6Z2VvbV90ZXh0X3JlcGVsKHNob3cubGVnZW5kID0gRiwgc2l6ZSA9IDMpICsKICB0aGVtZV9taW5pbWFsKCkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBDaGlsZHJlbiwgNC05eSAoQXBwcm9hY2ggIzMsIENvbWIuIE1ldGhvZCAjMSkiLAogICAgICAgc3VidGl0bGUgPSAiVTogQ2hhcmFjdGVycyBpbiBNb2RlcyAxICYgMiIsCiAgICAgICB4ID0gIk1vZGUgMSIsIHkgPSAiTW9kZSAyIiwgY29sb3IgPSAiQWdlIEdyb3VwIiwgZmlsbCA9ICJBZ2UgR3JvdXAiKQoKVV9mdW4oc3ZkM180OSwgImNoaWxkcmVuX2NvbWJfY2hhciIpICU+JQogIG11dGF0ZShhZ2VfZ3JvdXAgPSBpZmVsc2UoZ3JlcGwoIjc5IiwgcHJvcGVydHkpLCAiNy05eSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoZ3JlcGwoIjQ2IiwgcHJvcGVydHkpLCAiNC02eSIsIE5BKSksCiAgICAgICAgIHByb3BlcnR5ID0gZ3N1YigiXy4uJCIsICIiLCBwcm9wZXJ0eSkpICU+JQogIHNwcmVhZChtb2RlLCB2YWx1ZSkgJT4lCiAgZ2dwbG90KGFlcyh4ID0gbW9kZV8wMSwgeSA9IG1vZGVfMDMsIGxhYmVsID0gcHJvcGVydHksIGNvbG9yID0gYWdlX2dyb3VwKSkgKwogIGdlb21fcmVjdChkYXRhID0gdGVtcF9yZWN0LAogICAgICAgICAgICBhZXMoeCA9IE5VTEwsIHkgPSBOVUxMLCBsYWJlbCA9IE5VTEwsCiAgICAgICAgICAgICAgICB4bWluID0gbWluXzAxLCB4bWF4ID0gbWF4XzAxLCB5bWluID0gbWluXzAzLCB5bWF4ID0gbWF4XzAzLAogICAgICAgICAgICAgICAgY29sb3IgPSBhZ2VfZ3JvdXAsIGZpbGwgPSBhZ2VfZ3JvdXAsIGdyb3VwID0gYWdlX2dyb3VwKSwgCiAgICAgICAgICAgIGFscGhhID0gMC4wNSkgKwogIGdlb21fcG9pbnQoKSArCiAgc2NhbGVfeF9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgtMTAwLCAxMDAsIC4xKSkgKwogIHNjYWxlX3lfY29udGludW91cyhicmVha3MgPSBzZXEoLTEwMCwgMTAwLCAuMSkpICsKICBnZ3JlcGVsOjpnZW9tX3RleHRfcmVwZWwoc2hvdy5sZWdlbmQgPSBGLCBzaXplID0gMykgKwogIHRoZW1lX21pbmltYWwoKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IENoaWxkcmVuLCA0LTl5IChBcHByb2FjaCAjMywgQ29tYi4gTWV0aG9kICMxKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJVOiBDaGFyYWN0ZXJzIGluIE1vZGVzIDEgJiAzIiwKICAgICAgIHggPSAiTW9kZSAxIiwgeSA9ICJNb2RlIDMiLCBjb2xvciA9ICJBZ2UgR3JvdXAiLCBmaWxsID0gIkFnZSBHcm91cCIpCgpVX2Z1bihzdmQzXzQ5LCAiY2hpbGRyZW5fY29tYl9jaGFyIikgJT4lCiAgbXV0YXRlKGFnZV9ncm91cCA9IGlmZWxzZShncmVwbCgiNzkiLCBwcm9wZXJ0eSksICI3LTl5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShncmVwbCgiNDYiLCBwcm9wZXJ0eSksICI0LTZ5IiwgTkEpKSwKICAgICAgICAgcHJvcGVydHkgPSBnc3ViKCJfLi4kIiwgIiIsIHByb3BlcnR5KSkgJT4lCiAgc3ByZWFkKG1vZGUsIHZhbHVlKSAlPiUKICBnZ3Bsb3QoYWVzKHggPSBtb2RlXzAyLCB5ID0gbW9kZV8wMywgbGFiZWwgPSBwcm9wZXJ0eSwgY29sb3IgPSBhZ2VfZ3JvdXApKSArCiAgZ2VvbV9yZWN0KGRhdGEgPSB0ZW1wX3JlY3QsCiAgICAgICAgICAgIGFlcyh4ID0gTlVMTCwgeSA9IE5VTEwsIGxhYmVsID0gTlVMTCwKICAgICAgICAgICAgICAgIHhtaW4gPSBtaW5fMDIsIHhtYXggPSBtYXhfMDIsIHltaW4gPSBtaW5fMDMsIHltYXggPSBtYXhfMDMsCiAgICAgICAgICAgICAgICBjb2xvciA9IGFnZV9ncm91cCwgZmlsbCA9IGFnZV9ncm91cCwgZ3JvdXAgPSBhZ2VfZ3JvdXApLCAKICAgICAgICAgICAgYWxwaGEgPSAwLjA1KSArCiAgZ2VvbV9wb2ludCgpICsKICBzY2FsZV94X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKC0xMDAsIDEwMCwgLjEpKSArCiAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgtMTAwLCAxMDAsIC4xKSkgKwogIGdncmVwZWw6Omdlb21fdGV4dF9yZXBlbChzaG93LmxlZ2VuZCA9IEYsIHNpemUgPSAzKSArCiAgdGhlbWVfbWluaW1hbCgpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQ2hpbGRyZW4sIDQtOXkgKEFwcHJvYWNoICMzLCBDb21iLiBNZXRob2QgIzEpIiwKICAgICAgIHN1YnRpdGxlID0gIlU6IENoYXJhY3RlcnMgaW4gTW9kZXMgMiAmIDMiLAogICAgICAgeCA9ICJNb2RlIDIiLCB5ID0gIk1vZGUgMyIsIGNvbG9yID0gIkFnZSBHcm91cCIsIGZpbGwgPSAiQWdlIEdyb3VwIikKCnJtKHRlbXBfcmVjdCkKYGBgCgoKIyBBcHByb2FjaCAjNAoKSW4gQXBwcm9hY2ggIzQgd2UgbWVhbi1jZW50ZXIgYnkgY2hhcmFjdGVyLCB3aXRoIGNhcGFjaXRpZXMgYXMgcm93cyBhbmQgY2hhcmFjdGVycyBhcyBjb2x1bW5zLgoKIyMgUmF3IGRhdGEgbWF0cml4IHZpc3VhbGl6YXRpb25zIHsudGFic2V0fQoKIyMjIEFkdWx0cwoKSW4gdGhpcyBzdHVkeSwgNDMxIFVTIGFkdWx0cyByYXRlZCAyMSBjaGFyYWN0ZXJzIChiZXR3ZWVuLXN1YmplY3RzKSBvbiA0MCBjYXBhY2l0aWVzICh3aXRoaW4tc3ViamVjdHMpLiAoU2VlIFdlaXNtYW4sIER3ZWNrLCAmIE1hcmttYW4sIDIwMTcsIF9QTkFTXywgU3R1ZHkgNC4pCgpgYGB7ciwgZmlnLndpZHRoID0gMywgZmlnLmFzcCA9IDEuNDl9CmRfYWQgJT4lCiAgbWVhbl9jZW50X2Z1bigiY2hhcmFjdGVyIiwgYWdlX2dyb3VwID0gImFkdWx0cyIpICU+JQogIGdhdGhlcihjaGFyYWN0ZXIsIG1lYW5fY2VudCwgLWNhcGFjaXR5KSAlPiUKICBtdXRhdGUoY2hhcmFjdGVyID0gZmFjdG9yKGNoYXJhY3RlciwgbGV2ZWxzID0gY2hhcmFjdGVyX25hbWVzX2FkKSkgJT4lCiAgZ2dwbG90KGFlcyh5ID0gY2FwYWNpdHksIHggPSBjaGFyYWN0ZXIsIGZpbGwgPSBtZWFuX2NlbnQpKSArCiAgZ2VvbV90aWxlKGNvbG9yID0gImJsYWNrIikgKwogIHNjYWxlX2ZpbGxfZ3JhZGllbnQobG93ID0gImJsYWNrIiwgaGlnaCA9ICJ3aGl0ZSIsICMgbGltaXRzID0gYygtMywgMyksCiAgICAgICAgICAgICAgICAgICAgICBndWlkZSA9IGd1aWRlX2NvbG9yYmFyKGJhcmhlaWdodCA9IDE1KSkgKwogIHRoZW1lX21pbmltYWwoKSArCiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA5MCwgaGp1c3QgPSAxLCB2anVzdCA9IDAuNSkpICsKICBsYWJzKHRpdGxlID0gIlJhdyBkYXRhOiBBZHVsdHMiLAogICAgICAgc3VidGl0bGUgPSAiMjEgY2hhcmFjdGVycywgNDAgY2FwYWNpdGllcyIsCiAgICAgICB5ID0gIkNhcGFjaXR5IiwKICAgICAgIHggPSAiQ2hhcmFjdGVyIiwKICAgICAgIGZpbGwgPSAiTWVhbiByYXRpbmciKQpgYGAKCiMjIyA3LTl5byBjaGlsZHJlbgoKSW4gdGhpcyBzdHVkeSwgMTIzIDctIHRvIDkteWVhci1vbGQgVVMgY2hpbGRyZW4gcmF0ZWQgOSBjaGFyYWN0ZXJzIChiZXR3ZWVuLXN1YmplY3RzKSBvbiAyMCBjYXBhY2l0aWVzICh3aXRoaW4gc3ViamVjdHMpLiAoU2VlIFdlaXNtYW4sIER3ZWNrLCAmIE1hcmttYW4sIDIwMTgsIF9Qcm9jLiBDb2dTY2lfLikKCmBgYHtyLCBmaWcud2lkdGggPSAzLCBmaWcuYXNwID0gMS40OX0KZF83OSAlPiUKICBtZWFuX2NlbnRfZnVuKCJjaGFyYWN0ZXIiLCBhZ2VfZ3JvdXAgPSAiY2hpbGRyZW4iKSAlPiUKICBnYXRoZXIoY2hhcmFjdGVyLCBtZWFuX2NlbnQsIC1jYXBhY2l0eSkgJT4lCiAgbXV0YXRlKGNoYXJhY3RlciA9IGZhY3RvcihjaGFyYWN0ZXIsIGxldmVscyA9IGNoYXJhY3Rlcl9uYW1lc19jaCkpICU+JQogIGdncGxvdChhZXMoeSA9IGNhcGFjaXR5LCB4ID0gY2hhcmFjdGVyLCBmaWxsID0gbWVhbl9jZW50KSkgKwogIGdlb21fdGlsZShjb2xvciA9ICJibGFjayIpICsKICBzY2FsZV9maWxsX2dyYWRpZW50KGxvdyA9ICJibGFjayIsIGhpZ2ggPSAid2hpdGUiLCAjIGxpbWl0cyA9IGMoLTIsIDIpLAogICAgICAgICAgICAgICAgICAgICAgZ3VpZGUgPSBndWlkZV9jb2xvcmJhcihiYXJoZWlnaHQgPSAxNSkpICsKICB0aGVtZV9taW5pbWFsKCkgKwogIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gOTAsIGhqdXN0ID0gMSwgdmp1c3QgPSAwLjUpKSArCiAgbGFicyh0aXRsZSA9ICJSYXcgZGF0YTogNy0gdG8gOS15ZWFyLW9sZCBjaGlsZHJlbiIsCiAgICAgICBzdWJ0aXRsZSA9ICI5IGNoYXJhY3RlcnMsIDIwIGNhcGFjaXRpZXMiLAogICAgICAgeSA9ICJDYXBhY2l0eSIsCiAgICAgICB4ID0gIkNoYXJhY3RlciIsCiAgICAgICBmaWxsID0gIk1lYW4gcmF0aW5nIikKYGBgCgojIyMgNC02eW8gY2hpbGRyZW4KCkluIHRoaXMgc3R1ZHksIDEyNCA0LSB0byA2LXllYXItb2xkIFVTIGNoaWxkcmVuIHJhdGVkIDkgY2hhcmFjdGVycyAoYmV0d2Vlbi1zdWJqZWN0cykgb24gMjAgY2FwYWNpdGllcyAod2l0aGluIHN1YmplY3RzKS4gKFNlZSBXZWlzbWFuLCBEd2VjaywgJiBNYXJrbWFuLCAyMDE4LCBfUHJvYy4gQ29nU2NpXy4pCgpgYGB7ciwgZmlnLndpZHRoID0gMywgZmlnLmFzcCA9IDEuNDl9CmRfNDYgJT4lCiAgbWVhbl9jZW50X2Z1bigiY2hhcmFjdGVyIiwgYWdlX2dyb3VwID0gImNoaWxkcmVuIikgJT4lCiAgZ2F0aGVyKGNoYXJhY3RlciwgbWVhbl9jZW50LCAtY2FwYWNpdHkpICU+JQogIG11dGF0ZShjaGFyYWN0ZXIgPSBmYWN0b3IoY2hhcmFjdGVyLCBsZXZlbHMgPSBjaGFyYWN0ZXJfbmFtZXNfY2gpKSAlPiUKICBnZ3Bsb3QoYWVzKHkgPSBjYXBhY2l0eSwgeCA9IGNoYXJhY3RlciwgZmlsbCA9IG1lYW5fY2VudCkpICsKICBnZW9tX3RpbGUoY29sb3IgPSAiYmxhY2siKSArCiAgc2NhbGVfZmlsbF9ncmFkaWVudChsb3cgPSAiYmxhY2siLCBoaWdoID0gIndoaXRlIiwgIyBsaW1pdHMgPSBjKC0yLCAyKSwKICAgICAgICAgICAgICAgICAgICAgIGd1aWRlID0gZ3VpZGVfY29sb3JiYXIoYmFyaGVpZ2h0ID0gMTUpKSArCiAgdGhlbWVfbWluaW1hbCgpICsKICB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDkwLCBoanVzdCA9IDEsIHZqdXN0ID0gMC41KSkgKwogIGxhYnModGl0bGUgPSAiUmF3IGRhdGE6IDQtIHRvIDYteWVhci1vbGQgY2hpbGRyZW4iLAogICAgICAgc3VidGl0bGUgPSAiOSBjaGFyYWN0ZXJzLCAyMCBjYXBhY2l0aWVzIiwKICAgICAgIHkgPSAiQ2FwYWNpdHkiLAogICAgICAgeCA9ICJDaGFyYWN0ZXIiLAogICAgICAgZmlsbCA9ICJNZWFuIHJhdGluZyIpCmBgYAoKCiMjIFNWRCB7LnRhYnNldH0KCiMjIyBBZHVsdHMKCmBgYHtyfQpzdmQ0X2FkIDwtIHN2ZChkX2FkICU+JSAKICAgICAgICAgICAgICAgICBtZWFuX2NlbnRfZnVuKCJjaGFyYWN0ZXIiLCBhZ2VfZ3JvdXAgPSAiYWR1bHRzIikgJT4lCiAgICAgICAgICAgICAgICAgY29sdW1uX3RvX3Jvd25hbWVzKCJjYXBhY2l0eSIpLAogICAgICAgICAgICAgICBucm93KGRfYWQpLCBucm93KGRfYWQpKQpgYGAKCiMjIyMgUmVjb25zdHJ1Y3RlZCBkYXRhCgpgYGB7ciwgZmlnLndpZHRoID0gMywgZmlnLmFzcCA9IDEuNDl9CnBsb3RfcmVjb25zdHJ1Y3RfZnVuKHN2ZDRfYWQsIHRyYW5zcG9zZSA9IFRSVUUsICJhZHVsdHMiKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IEFkdWx0cyAoQXBwcm9hY2ggIzQpIiwKICAgICAgIHN1YnRpdGxlID0gIlJlY29uc3RydWN0ZWQgZGF0YXNldDogU3VtIG9mIG91dGVyIHByb2R1Y3RzIChVLCBWKSBtdWx0aXBsaWVkIGJ5IFMiLAogICAgICAgeCA9ICIiLCB5ID0gIiIpCmBgYAoKIyMjIyBGZWF0dXJlIHZlY3RvcnMKCmBgYHtyLCBmaWcud2lkdGggPSAzLCBmaWcuYXNwID0gMS40OX0KcGxvdF9VX2Z1bihzdmQ0X2FkLCAiYWR1bHRzIiwgdHJhbnNwb3NlID0gVFJVRSwgbXVsdGlwbHkgPSBGQUxTRSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBBZHVsdHMgKEFwcHJvYWNoICM0KSIsCiAgICAgICBzdWJ0aXRsZSA9ICJVOiBGZWF0dXJlIHZlY3RvcnMgKGJ5IG1vZGUpIiwKICAgICAgICMgc3VidGl0bGUgPSAiVSB4IFM6IEZlYXR1cmUgdmVjdG9ycyBtdWx0aXBsaWVkIGJ5IHNpbmd1bGFyIHZhbHVlIChieSBtb2RlKSIsCiAgICAgICB4ID0gIiIsIHkgPSAiIikKYGBgCgojIyMjIFNpbmd1bGFyIHZhbHVlcwoKYGBge3IsIGZpZy53aWR0aCA9IDMsIGZpZy5hc3AgPSAxfQpwbG90X1NfZnVuKHN2ZDRfYWQpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQWR1bHRzIChBcHByb2FjaCAjNCkiLAogICAgICAgc3VidGl0bGUgPSAiUzogU2luZ3VsYXIgdmFsdWVzIChieSBtb2RlKSIsCiAgICAgICB4ID0gIiIsIHkgPSAiIikKYGBgCgojIyMjIEl0ZW0gdmVjdG9ycwoKYGBge3IsIGZpZy53aWR0aCA9IDMsIGZpZy5hc3AgPSAxfQpwbG90X1ZfZnVuKHN2ZDRfYWQsICJhZHVsdHMiLCB0cmFuc3Bvc2UgPSBUUlVFLCBtdWx0aXBseSA9IEZBTFNFKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IEFkdWx0cyAoQXBwcm9hY2ggIzQpIiwKICAgICAgIHN1YnRpdGxlID0gIlY6IEl0ZW0gdmVjdG9ycyAoYnkgbW9kZSkiLAogICAgICAgIyBzdWJ0aXRsZSA9ICJWIHggUzogSXRlbSB2ZWN0b3JzIG11bHRpcGxpZWQgYnkgc2luZ3VsYXIgdmFsdWUgKGJ5IG1vZGUpIiwKICAgICAgIHggPSAiIiwgeSA9ICIiKQpgYGAKCiMjIyMgUGxvdHRpbmcgaW4gZGltZW5zaW9ucwoKYGBge3IsIGZpZy53aWR0aCA9IDQsIGZpZy5hc3AgPSAxfQpwbG90X1ZfZnVuX2l0ZW0oc3ZkNF9hZCwgImFkdWx0cyIsIHRyYW5zcG9zZSA9IFRSVUUsCiAgICAgICAgICAgICAgICBtb2RlcyA9IGMoIm1vZGVfMDEiLCAibW9kZV8wMiIpKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IEFkdWx0cyAoQXBwcm9hY2ggIzQpIiwKICAgICAgIHN1YnRpdGxlID0gIlY6IENoYXJhY3RlcnMgaW4gTW9kZXMgMSAmIDIiLAogICAgICAgeCA9ICJNb2RlIDEiLCB5ID0gIk1vZGUgMiIpCgpwbG90X1ZfZnVuX2l0ZW0oc3ZkNF9hZCwgImFkdWx0cyIsIHRyYW5zcG9zZSA9IFRSVUUsCiAgICAgICAgICAgICAgICBtb2RlcyA9IGMoIm1vZGVfMDEiLCAibW9kZV8wMyIpKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IEFkdWx0cyAoQXBwcm9hY2ggIzQpIiwKICAgICAgIHN1YnRpdGxlID0gIlY6IENoYXJhY3RlcnMgaW4gTW9kZXMgMSAmIDMiLAogICAgICAgeCA9ICJNb2RlIDEiLCB5ID0gIk1vZGUgMyIpCgpwbG90X1ZfZnVuX2l0ZW0oc3ZkNF9hZCwgImFkdWx0cyIsIHRyYW5zcG9zZSA9IFRSVUUsCiAgICAgICAgICAgICAgICBtb2RlcyA9IGMoIm1vZGVfMDIiLCAibW9kZV8wMyIpKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IEFkdWx0cyAoQXBwcm9hY2ggIzQpIiwKICAgICAgIHN1YnRpdGxlID0gIlY6IENoYXJhY3RlcnMgaW4gTW9kZXMgMiAmIDMiLAogICAgICAgeCA9ICJNb2RlIDIiLCB5ID0gIk1vZGUgMyIpCmBgYAoKYGBge3IsIGZpZy53aWR0aCA9IDQsIGZpZy5hc3AgPSAxfQpwbG90X1VfZnVuX3Byb3Aoc3ZkNF9hZCwgImFkdWx0cyIsIHRyYW5zcG9zZSA9IFRSVUUsIGVmYV9jb2xvcnMgPSBUUlVFLAogICAgICAgICAgICAgICAgbW9kZXMgPSBjKCJtb2RlXzAxIiwgIm1vZGVfMDIiKSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBBZHVsdHMgKEFwcHJvYWNoICM0KSIsCiAgICAgICBzdWJ0aXRsZSA9ICJVOiBDYXBhY2l0aWVzIGluIE1vZGVzIDEgJiAyIiwKICAgICAgIHggPSAiTW9kZSAxIiwgeSA9ICJNb2RlIDIiKQoKcGxvdF9VX2Z1bl9wcm9wKHN2ZDRfYWQsICJhZHVsdHMiLCB0cmFuc3Bvc2UgPSBUUlVFLCBlZmFfY29sb3JzID0gVFJVRSwKICAgICAgICAgICAgICAgIG1vZGVzID0gYygibW9kZV8wMSIsICJtb2RlXzAzIikpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQWR1bHRzIChBcHByb2FjaCAjNCkiLAogICAgICAgc3VidGl0bGUgPSAiVTogQ2FwYWNpdGllcyBpbiBNb2RlcyAxICYgMyIsCiAgICAgICB4ID0gIk1vZGUgMSIsIHkgPSAiTW9kZSAzIikKCnBsb3RfVV9mdW5fcHJvcChzdmQ0X2FkLCAiYWR1bHRzIiwgdHJhbnNwb3NlID0gVFJVRSwgZWZhX2NvbG9ycyA9IFRSVUUsCiAgICAgICAgICAgICAgICBtb2RlcyA9IGMoIm1vZGVfMDIiLCAibW9kZV8wMyIpKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IEFkdWx0cyAoQXBwcm9hY2ggIzQpIiwKICAgICAgIHN1YnRpdGxlID0gIlU6IENhcGFjaXRpZXMgaW4gTW9kZXMgMiAmIDMiLAogICAgICAgeCA9ICJNb2RlIDIiLCB5ID0gIk1vZGUgMyIpCmBgYAoKCiMjIyBDaGlsZHJlbiwgNy05eQoKYGBge3J9CnN2ZDRfNzkgPC0gc3ZkKGRfNzkgJT4lIAogICAgICAgICAgICAgICAgIG1lYW5fY2VudF9mdW4oImNoYXJhY3RlciIsIGFnZV9ncm91cCA9ICJjaGlsZHJlbiIpICU+JQogICAgICAgICAgICAgICAgIGNvbHVtbl90b19yb3duYW1lcygiY2FwYWNpdHkiKSwKICAgICAgICAgICAgICAgbnJvdyhkXzc5KSwgbnJvdyhkXzc5KSkKYGBgCgojIyMjIFJlY29uc3RydWN0ZWQgZGF0YQoKYGBge3IsIGZpZy53aWR0aCA9IDMsIGZpZy5hc3AgPSAxLjQ5fQpwbG90X3JlY29uc3RydWN0X2Z1bihzdmQ0Xzc5LCB0cmFuc3Bvc2UgPSBUUlVFLCAiY2hpbGRyZW4iKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IENoaWxkcmVuLCA3LTl5IChBcHByb2FjaCAjNCkiLAogICAgICAgc3VidGl0bGUgPSAiUmVjb25zdHJ1Y3RlZCBkYXRhc2V0OiBTdW0gb2Ygb3V0ZXIgcHJvZHVjdHMgKFUsIFYpIG11bHRpcGxpZWQgYnkgUyIsCiAgICAgICB4ID0gIiIsIHkgPSAiIikKYGBgCgojIyMjIEZlYXR1cmUgdmVjdG9ycwoKYGBge3IsIGZpZy53aWR0aCA9IDMsIGZpZy5hc3AgPSAxLjQ5fQpwbG90X1VfZnVuKHN2ZDRfNzksICJjaGlsZHJlbiIsIHRyYW5zcG9zZSA9IFRSVUUsIG11bHRpcGx5ID0gRkFMU0UpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQ2hpbGRyZW4sIDctOXkgKEFwcHJvYWNoICM0KSIsCiAgICAgICBzdWJ0aXRsZSA9ICJVOiBGZWF0dXJlIHZlY3RvcnMgKGJ5IG1vZGUpIiwKICAgICAgICMgc3VidGl0bGUgPSAiVSB4IFM6IEZlYXR1cmUgdmVjdG9ycyBtdWx0aXBsaWVkIGJ5IHNpbmd1bGFyIHZhbHVlIChieSBtb2RlKSIsCiAgICAgICB4ID0gIiIsIHkgPSAiIikKYGBgCgojIyMjIFNpbmd1bGFyIHZhbHVlcwoKYGBge3IsIGZpZy53aWR0aCA9IDMsIGZpZy5hc3AgPSAxfQpwbG90X1NfZnVuKHN2ZDRfNzkpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQ2hpbGRyZW4sIDctOXkgKEFwcHJvYWNoICM0KSIsCiAgICAgICBzdWJ0aXRsZSA9ICJTOiBTaW5ndWxhciB2YWx1ZXMgKGJ5IG1vZGUpIiwKICAgICAgIHggPSAiIiwgeSA9ICIiKQpgYGAKCiMjIyMgSXRlbSB2ZWN0b3JzCgpgYGB7ciwgZmlnLndpZHRoID0gMywgZmlnLmFzcCA9IDF9CnBsb3RfVl9mdW4oc3ZkNF83OSwgImNoaWxkcmVuIiwgdHJhbnNwb3NlID0gVFJVRSwgbXVsdGlwbHkgPSBGQUxTRSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBDaGlsZHJlbiwgNy05eSAoQXBwcm9hY2ggIzQpIiwKICAgICAgIHN1YnRpdGxlID0gIlY6IEl0ZW0gdmVjdG9ycyAoYnkgbW9kZSkiLAogICAgICAgIyBzdWJ0aXRsZSA9ICJWIHggUzogSXRlbSB2ZWN0b3JzIG11bHRpcGxpZWQgYnkgc2luZ3VsYXIgdmFsdWUgKGJ5IG1vZGUpIiwKICAgICAgIHggPSAiIiwgeSA9ICIiKQpgYGAKCiMjIyMgUGxvdHRpbmcgaW4gZGltZW5zaW9ucwoKYGBge3IsIGZpZy53aWR0aCA9IDQsIGZpZy5hc3AgPSAxfQpwbG90X1ZfZnVuX2l0ZW0oc3ZkNF83OSwgImNoaWxkcmVuIiwgdHJhbnNwb3NlID0gVFJVRSwKICAgICAgICAgICAgICAgIG1vZGVzID0gYygibW9kZV8wMSIsICJtb2RlXzAyIikpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQ2hpbGRyZW4sIDctOXkgKEFwcHJvYWNoICM0KSIsCiAgICAgICBzdWJ0aXRsZSA9ICJWOiBDaGFyYWN0ZXJzIGluIE1vZGVzIDEgJiAyIiwKICAgICAgIHggPSAiTW9kZSAxIiwgeSA9ICJNb2RlIDIiKQoKcGxvdF9WX2Z1bl9pdGVtKHN2ZDRfNzksICJjaGlsZHJlbiIsIHRyYW5zcG9zZSA9IFRSVUUsCiAgICAgICAgICAgICAgICBtb2RlcyA9IGMoIm1vZGVfMDEiLCAibW9kZV8wMyIpKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IENoaWxkcmVuLCA3LTl5IChBcHByb2FjaCAjNCkiLAogICAgICAgc3VidGl0bGUgPSAiVjogQ2hhcmFjdGVycyBpbiBNb2RlcyAxICYgMyIsCiAgICAgICB4ID0gIk1vZGUgMSIsIHkgPSAiTW9kZSAzIikKCnBsb3RfVl9mdW5faXRlbShzdmQ0Xzc5LCAiY2hpbGRyZW4iLCB0cmFuc3Bvc2UgPSBUUlVFLAogICAgICAgICAgICAgICAgbW9kZXMgPSBjKCJtb2RlXzAyIiwgIm1vZGVfMDMiKSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBDaGlsZHJlbiwgNy05eSAoQXBwcm9hY2ggIzQpIiwKICAgICAgIHN1YnRpdGxlID0gIlY6IENoYXJhY3RlcnMgaW4gTW9kZXMgMiAmIDMiLAogICAgICAgeCA9ICJNb2RlIDIiLCB5ID0gIk1vZGUgMyIpCmBgYAoKYGBge3IsIGZpZy53aWR0aCA9IDQsIGZpZy5hc3AgPSAxfQpwbG90X1VfZnVuX3Byb3Aoc3ZkNF83OSwgImNoaWxkcmVuIiwgdHJhbnNwb3NlID0gVFJVRSwgZWZhX2NvbG9ycyA9IFRSVUUsCiAgICAgICAgICAgICAgICBtb2RlcyA9IGMoIm1vZGVfMDEiLCAibW9kZV8wMiIpKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IENoaWxkcmVuLCA3LTl5IChBcHByb2FjaCAjNCkiLAogICAgICAgc3VidGl0bGUgPSAiVTogQ2FwYWNpdGllcyBpbiBNb2RlcyAxICYgMiIsCiAgICAgICB4ID0gIk1vZGUgMSIsIHkgPSAiTW9kZSAyIikKCnBsb3RfVV9mdW5fcHJvcChzdmQ0Xzc5LCAiY2hpbGRyZW4iLCB0cmFuc3Bvc2UgPSBUUlVFLCBlZmFfY29sb3JzID0gVFJVRSwKICAgICAgICAgICAgICAgIG1vZGVzID0gYygibW9kZV8wMSIsICJtb2RlXzAzIikpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQ2hpbGRyZW4sIDctOXkgKEFwcHJvYWNoICM0KSIsCiAgICAgICBzdWJ0aXRsZSA9ICJVOiBDYXBhY2l0aWVzIGluIE1vZGVzIDEgJiAzIiwKICAgICAgIHggPSAiTW9kZSAxIiwgeSA9ICJNb2RlIDMiKQoKcGxvdF9VX2Z1bl9wcm9wKHN2ZDRfNzksICJjaGlsZHJlbiIsIHRyYW5zcG9zZSA9IFRSVUUsIGVmYV9jb2xvcnMgPSBUUlVFLAogICAgICAgICAgICAgICAgbW9kZXMgPSBjKCJtb2RlXzAyIiwgIm1vZGVfMDMiKSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBDaGlsZHJlbiwgNy05eSAoQXBwcm9hY2ggIzQpIiwKICAgICAgIHN1YnRpdGxlID0gIlU6IENhcGFjaXRpZXMgaW4gTW9kZXMgMiAmIDMiLAogICAgICAgeCA9ICJNb2RlIDIiLCB5ID0gIk1vZGUgMyIpCmBgYAoKCiMjIyBDaGlsZHJlbiwgNC02eQoKYGBge3J9CnN2ZDRfNDYgPC0gc3ZkKGRfNDYgJT4lIAogICAgICAgICAgICAgICAgIG1lYW5fY2VudF9mdW4oImNoYXJhY3RlciIsIGFnZV9ncm91cCA9ICJjaGlsZHJlbiIpICU+JQogICAgICAgICAgICAgICAgIGNvbHVtbl90b19yb3duYW1lcygiY2FwYWNpdHkiKSwKICAgICAgICAgICAgICAgbnJvdyhkXzQ2KSwgbnJvdyhkXzQ2KSkKYGBgCgojIyMjIFJlY29uc3RydWN0ZWQgZGF0YQoKYGBge3IsIGZpZy53aWR0aCA9IDMsIGZpZy5hc3AgPSAxLjQ5fQpwbG90X3JlY29uc3RydWN0X2Z1bihzdmQ0XzQ2LCB0cmFuc3Bvc2UgPSBUUlVFLCAiY2hpbGRyZW4iKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IENoaWxkcmVuLCA0LTZ5IChBcHByb2FjaCAjNCkiLAogICAgICAgc3VidGl0bGUgPSAiUmVjb25zdHJ1Y3RlZCBkYXRhc2V0OiBTdW0gb2Ygb3V0ZXIgcHJvZHVjdHMgKFUsIFYpIG11bHRpcGxpZWQgYnkgUyIsCiAgICAgICB4ID0gIiIsIHkgPSAiIikKYGBgCgojIyMjIEZlYXR1cmUgdmVjdG9ycwoKYGBge3IsIGZpZy53aWR0aCA9IDMsIGZpZy5hc3AgPSAxLjQ5fQpwbG90X1VfZnVuKHN2ZDRfNDYsICJjaGlsZHJlbiIsIHRyYW5zcG9zZSA9IFRSVUUsIG11bHRpcGx5ID0gRkFMU0UpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQ2hpbGRyZW4sIDQtNnkgKEFwcHJvYWNoICM0KSIsCiAgICAgICBzdWJ0aXRsZSA9ICJVOiBGZWF0dXJlIHZlY3RvcnMgKGJ5IG1vZGUpIiwKICAgICAgICMgc3VidGl0bGUgPSAiVSB4IFM6IEZlYXR1cmUgdmVjdG9ycyBtdWx0aXBsaWVkIGJ5IHNpbmd1bGFyIHZhbHVlIChieSBtb2RlKSIsCiAgICAgICB4ID0gIiIsIHkgPSAiIikKYGBgCgojIyMjIFNpbmd1bGFyIHZhbHVlcwoKYGBge3IsIGZpZy53aWR0aCA9IDMsIGZpZy5hc3AgPSAxfQpwbG90X1NfZnVuKHN2ZDRfNDYpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQ2hpbGRyZW4sIDQtNnkgKEFwcHJvYWNoICM0KSIsCiAgICAgICBzdWJ0aXRsZSA9ICJTOiBTaW5ndWxhciB2YWx1ZXMgKGJ5IG1vZGUpIiwKICAgICAgIHggPSAiIiwgeSA9ICIiKQpgYGAKCiMjIyMgSXRlbSB2ZWN0b3JzCgpgYGB7ciwgZmlnLndpZHRoID0gMywgZmlnLmFzcCA9IDF9CnBsb3RfVl9mdW4oc3ZkNF80NiwgImNoaWxkcmVuIiwgdHJhbnNwb3NlID0gVFJVRSwgbXVsdGlwbHkgPSBGQUxTRSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBDaGlsZHJlbiwgNC02eSAoQXBwcm9hY2ggIzQpIiwKICAgICAgIHN1YnRpdGxlID0gIlY6IEl0ZW0gdmVjdG9ycyAoYnkgbW9kZSkiLAogICAgICAgIyBzdWJ0aXRsZSA9ICJWIHggUzogSXRlbSB2ZWN0b3JzIG11bHRpcGxpZWQgYnkgc2luZ3VsYXIgdmFsdWUgKGJ5IG1vZGUpIiwKICAgICAgIHggPSAiIiwgeSA9ICIiKQpgYGAKCiMjIyMgUGxvdHRpbmcgaW4gZGltZW5zaW9ucwoKYGBge3IsIGZpZy53aWR0aCA9IDQsIGZpZy5hc3AgPSAxfQpwbG90X1ZfZnVuX2l0ZW0oc3ZkNF80NiwgImNoaWxkcmVuIiwgdHJhbnNwb3NlID0gVFJVRSwKICAgICAgICAgICAgICAgIG1vZGVzID0gYygibW9kZV8wMSIsICJtb2RlXzAyIikpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQ2hpbGRyZW4sIDQtNnkgKEFwcHJvYWNoICM0KSIsCiAgICAgICBzdWJ0aXRsZSA9ICJWOiBDaGFyYWN0ZXJzIGluIE1vZGVzIDEgJiAyIiwKICAgICAgIHggPSAiTW9kZSAxIiwgeSA9ICJNb2RlIDIiKQoKcGxvdF9WX2Z1bl9pdGVtKHN2ZDRfNDYsICJjaGlsZHJlbiIsIHRyYW5zcG9zZSA9IFRSVUUsCiAgICAgICAgICAgICAgICBtb2RlcyA9IGMoIm1vZGVfMDEiLCAibW9kZV8wMyIpKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IENoaWxkcmVuLCA0LTZ5IChBcHByb2FjaCAjNCkiLAogICAgICAgc3VidGl0bGUgPSAiVjogQ2hhcmFjdGVycyBpbiBNb2RlcyAxICYgMyIsCiAgICAgICB4ID0gIk1vZGUgMSIsIHkgPSAiTW9kZSAzIikKCnBsb3RfVl9mdW5faXRlbShzdmQ0XzQ2LCAiY2hpbGRyZW4iLCB0cmFuc3Bvc2UgPSBUUlVFLAogICAgICAgICAgICAgICAgbW9kZXMgPSBjKCJtb2RlXzAyIiwgIm1vZGVfMDMiKSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBDaGlsZHJlbiwgNC02eSAoQXBwcm9hY2ggIzQpIiwKICAgICAgIHN1YnRpdGxlID0gIlY6IENoYXJhY3RlcnMgaW4gTW9kZXMgMiAmIDMiLAogICAgICAgeCA9ICJNb2RlIDIiLCB5ID0gIk1vZGUgMyIpCmBgYAoKYGBge3IsIGZpZy53aWR0aCA9IDQsIGZpZy5hc3AgPSAxfQpwbG90X1VfZnVuX3Byb3Aoc3ZkNF80NiwgImNoaWxkcmVuIiwgdHJhbnNwb3NlID0gVFJVRSwgZWZhX2NvbG9ycyA9IFRSVUUsCiAgICAgICAgICAgICAgICBtb2RlcyA9IGMoIm1vZGVfMDEiLCAibW9kZV8wMiIpKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IENoaWxkcmVuLCA0LTZ5IChBcHByb2FjaCAjNCkiLAogICAgICAgc3VidGl0bGUgPSAiVTogQ2FwYWNpdGllcyBpbiBNb2RlcyAxICYgMiIsCiAgICAgICB4ID0gIk1vZGUgMSIsIHkgPSAiTW9kZSAyIikKCnBsb3RfVV9mdW5fcHJvcChzdmQ0XzQ2LCAiY2hpbGRyZW4iLCB0cmFuc3Bvc2UgPSBUUlVFLCBlZmFfY29sb3JzID0gVFJVRSwKICAgICAgICAgICAgICAgIG1vZGVzID0gYygibW9kZV8wMSIsICJtb2RlXzAzIikpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQ2hpbGRyZW4sIDQtNnkgKEFwcHJvYWNoICM0KSIsCiAgICAgICBzdWJ0aXRsZSA9ICJVOiBDYXBhY2l0aWVzIGluIE1vZGVzIDEgJiAzIiwKICAgICAgIHggPSAiTW9kZSAxIiwgeSA9ICJNb2RlIDMiKQoKcGxvdF9VX2Z1bl9wcm9wKHN2ZDRfNDYsICJjaGlsZHJlbiIsIHRyYW5zcG9zZSA9IFRSVUUsIGVmYV9jb2xvcnMgPSBUUlVFLAogICAgICAgICAgICAgICAgbW9kZXMgPSBjKCJtb2RlXzAyIiwgIm1vZGVfMDMiKSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBDaGlsZHJlbiwgNC02eSAoQXBwcm9hY2ggIzQpIiwKICAgICAgIHN1YnRpdGxlID0gIlU6IENhcGFjaXRpZXMgaW4gTW9kZXMgMiAmIDMiLAogICAgICAgeCA9ICJNb2RlIDIiLCB5ID0gIk1vZGUgMyIpCmBgYAoKCiMjIyBDaGlsZHJlbiwgNC05eQoKYGBge3J9CnN2ZDRfNDkgPC0gc3ZkKGRfNzkgJT4lCiAgICAgICAgICAgICAgICAgbXV0YXRlKGNoYXJhY3RlciA9IHBhc3RlKGNoYXJhY3RlciwgIjc5Iiwgc2VwID0gIl8iKSkgJT4lCiAgICAgICAgICAgICAgICAgYmluZF9yb3dzKGRfNDYgJT4lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXV0YXRlKGNoYXJhY3RlciA9IHBhc3RlKGNoYXJhY3RlciwgIjQ2IiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcCA9ICJfIikpKSAlPiUgCiAgICAgICAgICAgICAgICAgbWVhbl9jZW50X2Z1bigiY2hhcmFjdGVyIiwgYWdlX2dyb3VwID0gImNoaWxkcmVuIikgJT4lCiAgICAgICAgICAgICAgICAgY29sdW1uX3RvX3Jvd25hbWVzKCJjYXBhY2l0eSIpLCAKICAgICAgICAgICAgICAgbnJvdyhkXzc5KSArIG5yb3coZF80NiksIG5yb3coZF83OSkgKyBucm93KGRfNDYpKQpgYGAKCiMjIyMgUmVjb25zdHJ1Y3RlZCBkYXRhCgpgYGB7ciwgZmlnLndpZHRoID0gNCwgZmlnLmFzcCA9IDF9CnBsb3RfcmVjb25zdHJ1Y3RfZnVuKHN2ZDRfNDksICJjaGlsZHJlbl9jb21iX2NoYXIiLCB0cmFuc3Bvc2UgPSBUUlVFKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IENoaWxkcmVuLCA0LTl5IChBcHByb2FjaCAjNCkiLAogICAgICAgc3VidGl0bGUgPSAiUmVjb25zdHJ1Y3RlZCBkYXRhc2V0OiBTdW0gb2Ygb3V0ZXIgcHJvZHVjdHMgKFUsIFYpIG11bHRpcGxpZWQgYnkgUyIsCiAgICAgICB4ID0gIiIsIHkgPSAiIikgKwogIGdlb21fdmxpbmUoeGludGVyY2VwdCA9IDkuNSwgc2l6ZSA9IDEpCmBgYAoKIyMjIyBGZWF0dXJlIHZlY3RvcnMKCmBgYHtyLCBmaWcud2lkdGggPSAzLCBmaWcuYXNwID0gMX0KcGxvdF9VX2Z1bihzdmQ0XzQ5LCAiY2hpbGRyZW5fY29tYl9jaGFyIiwgdHJhbnNwb3NlID0gVFJVRSwgbXVsdGlwbHkgPSBGQUxTRSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBDaGlsZHJlbiwgNC05eSAoQXBwcm9hY2ggIzQpIiwKICAgICAgIHN1YnRpdGxlID0gIlU6IEZlYXR1cmUgdmVjdG9ycyAoYnkgbW9kZSkiLAogICAgICAgIyBzdWJ0aXRsZSA9ICJVIHggUzogRmVhdHVyZSB2ZWN0b3JzIG11bHRpcGxpZWQgYnkgc2luZ3VsYXIgdmFsdWUgKGJ5IG1vZGUpIiwKICAgICAgIHggPSAiIiwgeSA9ICIiKQpgYGAKCiMjIyMgU2luZ3VsYXIgdmFsdWVzCgpgYGB7ciwgZmlnLndpZHRoID0gMywgZmlnLmFzcCA9IDF9CnBsb3RfU19mdW4oc3ZkNF80OSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBDaGlsZHJlbiwgNC05eSAoQXBwcm9hY2ggIzQpIiwKICAgICAgIHN1YnRpdGxlID0gIlM6IFNpbmd1bGFyIHZhbHVlcyAoYnkgbW9kZSkiLAogICAgICAgeCA9ICIiLCB5ID0gIiIpCmBgYAoKIyMjIyBJdGVtIHZlY3RvcnMKCmBgYHtyLCBmaWcud2lkdGggPSAzLCBmaWcuYXNwID0gMX0KcGxvdF9WX2Z1bihzdmQ0XzQ5LCAiY2hpbGRyZW5fY29tYl9jaGFyIiwgdHJhbnNwb3NlID0gVFJVRSwgbXVsdGlwbHkgPSBGQUxTRSkgKwogIGxhYnModGl0bGUgPSAiU1ZEOiBDaGlsZHJlbiwgNC05eSAoQXBwcm9hY2ggIzQpIiwKICAgICAgIHN1YnRpdGxlID0gIlY6IEl0ZW0gdmVjdG9ycyAoYnkgbW9kZSkiLAogICAgICAgIyBzdWJ0aXRsZSA9ICJWIHggUzogSXRlbSB2ZWN0b3JzIG11bHRpcGxpZWQgYnkgc2luZ3VsYXIgdmFsdWUgKGJ5IG1vZGUpIiwKICAgICAgIHggPSAiIiwgeSA9ICIiKSArCiAgZ2VvbV9obGluZSh5aW50ZXJjZXB0ID0gOS41LCBzaXplID0gMSkKYGBgCgojIyMjIFBsb3R0aW5nIGluIGRpbWVuc2lvbnMKCmBgYHtyLCBmaWcud2lkdGggPSA0LCBmaWcuYXNwID0gMX0KdGVtcF9yZWN0IDwtIFZfZnVuKHN2ZDRfNDksICJjaGlsZHJlbl9jb21iX2NoYXIiLCB0cmFuc3Bvc2UgPSBUUlVFKSAlPiUKICBtdXRhdGUoYWdlX2dyb3VwID0gaWZlbHNlKGdyZXBsKCI3OSIsIGl0ZW0pLCAiNy05eSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoZ3JlcGwoIjQ2IiwgaXRlbSksICI0LTZ5IiwgTkEpKSwKICAgICAgICAgaXRlbSA9IGdzdWIoIl8uLiQiLCAiIiwgaXRlbSkpICU+JQogIHNwcmVhZChtb2RlLCB2YWx1ZSkgJT4lCiAgZ3JvdXBfYnkoYWdlX2dyb3VwKSAlPiUKICBzdW1tYXJpc2UobWluXzAxID0gbWluKG1vZGVfMDEpLCBtYXhfMDEgPSBtYXgobW9kZV8wMSksIAogICAgICAgICAgICBtaW5fMDIgPSBtaW4obW9kZV8wMiksIG1heF8wMiA9IG1heChtb2RlXzAyKSwKICAgICAgICAgICAgbWluXzAzID0gbWluKG1vZGVfMDMpLCBtYXhfMDMgPSBtYXgobW9kZV8wMykpICU+JQogIHVuZ3JvdXAoKSAlPiUKICBkYXRhLmZyYW1lKCkKClZfZnVuKHN2ZDRfNDksICJjaGlsZHJlbl9jb21iX2NoYXIiLCB0cmFuc3Bvc2UgPSBUUlVFKSAlPiUKICBtdXRhdGUoYWdlX2dyb3VwID0gaWZlbHNlKGdyZXBsKCI3OSIsIGl0ZW0pLCAiNy05eSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoZ3JlcGwoIjQ2IiwgaXRlbSksICI0LTZ5IiwgTkEpKSwKICAgICAgICAgaXRlbSA9IGdzdWIoIl8uLiQiLCAiIiwgaXRlbSkpICU+JQogIHNwcmVhZChtb2RlLCB2YWx1ZSkgJT4lCiAgZ2dwbG90KGFlcyh4ID0gbW9kZV8wMSwgeSA9IG1vZGVfMDIsIGxhYmVsID0gaXRlbSwgY29sb3IgPSBhZ2VfZ3JvdXApKSArCiAgZ2VvbV9yZWN0KGRhdGEgPSB0ZW1wX3JlY3QsCiAgICAgICAgICAgIGFlcyh4ID0gTlVMTCwgeSA9IE5VTEwsIGxhYmVsID0gTlVMTCwKICAgICAgICAgICAgICAgIHhtaW4gPSBtaW5fMDEsIHhtYXggPSBtYXhfMDEsIHltaW4gPSBtaW5fMDIsIHltYXggPSBtYXhfMDIsCiAgICAgICAgICAgICAgICBjb2xvciA9IGFnZV9ncm91cCwgZmlsbCA9IGFnZV9ncm91cCwgZ3JvdXAgPSBhZ2VfZ3JvdXApLCAKICAgICAgICAgICAgYWxwaGEgPSAwLjA1KSArCiAgZ2VvbV9wb2ludCgpICsKICBzY2FsZV94X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKC0xMDAsIDEwMCwgLjEpKSArCiAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgtMTAwLCAxMDAsIC4xKSkgKwogIGdncmVwZWw6Omdlb21fdGV4dF9yZXBlbChzaG93LmxlZ2VuZCA9IEYsIHNpemUgPSAzKSArCiAgdGhlbWVfbWluaW1hbCgpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQ2hpbGRyZW4sIDQtOXkgKEFwcHJvYWNoICM0LCBDb21iLiBNZXRob2QgIzEpIiwKICAgICAgIHN1YnRpdGxlID0gIlY6IENoYXJhY3RlcnMgaW4gTW9kZXMgMSAmIDIiLAogICAgICAgeCA9ICJNb2RlIDEiLCB5ID0gIk1vZGUgMiIsIGNvbG9yID0gIkFnZSBHcm91cCIsIGZpbGwgPSAiQWdlIEdyb3VwIikKClZfZnVuKHN2ZDRfNDksICJjaGlsZHJlbl9jb21iX2NoYXIiLCB0cmFuc3Bvc2UgPSBUUlVFKSAlPiUKICBtdXRhdGUoYWdlX2dyb3VwID0gaWZlbHNlKGdyZXBsKCI3OSIsIGl0ZW0pLCAiNy05eSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoZ3JlcGwoIjQ2IiwgaXRlbSksICI0LTZ5IiwgTkEpKSwKICAgICAgICAgaXRlbSA9IGdzdWIoIl8uLiQiLCAiIiwgaXRlbSkpICU+JQogIHNwcmVhZChtb2RlLCB2YWx1ZSkgJT4lCiAgZ2dwbG90KGFlcyh4ID0gbW9kZV8wMSwgeSA9IG1vZGVfMDMsIGxhYmVsID0gaXRlbSwgY29sb3IgPSBhZ2VfZ3JvdXApKSArCiAgZ2VvbV9yZWN0KGRhdGEgPSB0ZW1wX3JlY3QsCiAgICAgICAgICAgIGFlcyh4ID0gTlVMTCwgeSA9IE5VTEwsIGxhYmVsID0gTlVMTCwKICAgICAgICAgICAgICAgIHhtaW4gPSBtaW5fMDEsIHhtYXggPSBtYXhfMDEsIHltaW4gPSBtaW5fMDMsIHltYXggPSBtYXhfMDMsCiAgICAgICAgICAgICAgICBjb2xvciA9IGFnZV9ncm91cCwgZmlsbCA9IGFnZV9ncm91cCwgZ3JvdXAgPSBhZ2VfZ3JvdXApLCAKICAgICAgICAgICAgYWxwaGEgPSAwLjA1KSArCiAgZ2VvbV9wb2ludCgpICsKICBzY2FsZV94X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKC0xMDAsIDEwMCwgLjEpKSArCiAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgtMTAwLCAxMDAsIC4xKSkgKwogIGdncmVwZWw6Omdlb21fdGV4dF9yZXBlbChzaG93LmxlZ2VuZCA9IEYsIHNpemUgPSAzKSArCiAgdGhlbWVfbWluaW1hbCgpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQ2hpbGRyZW4sIDQtOXkgKEFwcHJvYWNoICM0LCBDb21iLiBNZXRob2QgIzEpIiwKICAgICAgIHN1YnRpdGxlID0gIlY6IENoYXJhY3RlcnMgaW4gTW9kZXMgMSAmIDMiLAogICAgICAgeCA9ICJNb2RlIDEiLCB5ID0gIk1vZGUgMyIsIGNvbG9yID0gIkFnZSBHcm91cCIsIGZpbGwgPSAiQWdlIEdyb3VwIikKClZfZnVuKHN2ZDRfNDksICJjaGlsZHJlbl9jb21iX2NoYXIiLCB0cmFuc3Bvc2UgPSBUUlVFKSAlPiUKICBtdXRhdGUoYWdlX2dyb3VwID0gaWZlbHNlKGdyZXBsKCI3OSIsIGl0ZW0pLCAiNy05eSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoZ3JlcGwoIjQ2IiwgaXRlbSksICI0LTZ5IiwgTkEpKSwKICAgICAgICAgaXRlbSA9IGdzdWIoIl8uLiQiLCAiIiwgaXRlbSkpICU+JQogIHNwcmVhZChtb2RlLCB2YWx1ZSkgJT4lCiAgZ2dwbG90KGFlcyh4ID0gbW9kZV8wMiwgeSA9IG1vZGVfMDMsIGxhYmVsID0gaXRlbSwgY29sb3IgPSBhZ2VfZ3JvdXApKSArCiAgZ2VvbV9yZWN0KGRhdGEgPSB0ZW1wX3JlY3QsCiAgICAgICAgICAgIGFlcyh4ID0gTlVMTCwgeSA9IE5VTEwsIGxhYmVsID0gTlVMTCwKICAgICAgICAgICAgICAgIHhtaW4gPSBtaW5fMDIsIHhtYXggPSBtYXhfMDIsIHltaW4gPSBtaW5fMDMsIHltYXggPSBtYXhfMDMsCiAgICAgICAgICAgICAgICBjb2xvciA9IGFnZV9ncm91cCwgZmlsbCA9IGFnZV9ncm91cCwgZ3JvdXAgPSBhZ2VfZ3JvdXApLCAKICAgICAgICAgICAgYWxwaGEgPSAwLjA1KSArCiAgZ2VvbV9wb2ludCgpICsKICBzY2FsZV94X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKC0xMDAsIDEwMCwgLjEpKSArCiAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgtMTAwLCAxMDAsIC4xKSkgKwogIGdncmVwZWw6Omdlb21fdGV4dF9yZXBlbChzaG93LmxlZ2VuZCA9IEYsIHNpemUgPSAzKSArCiAgdGhlbWVfbWluaW1hbCgpICsKICBsYWJzKHRpdGxlID0gIlNWRDogQ2hpbGRyZW4sIDQtOXkgKEFwcHJvYWNoICM0LCBDb21iLiBNZXRob2QgIzEpIiwKICAgICAgIHN1YnRpdGxlID0gIlY6IENoYXJhY3RlcnMgaW4gTW9kZXMgMiAmIDMiLAogICAgICAgeCA9ICJNb2RlIDIiLCB5ID0gIk1vZGUgMyIsIGNvbG9yID0gIkFnZSBHcm91cCIsIGZpbGwgPSAiQWdlIEdyb3VwIikKCnJtKHRlbXBfcmVjdCkKYGBgCgpgYGB7ciwgZmlnLndpZHRoID0gNCwgZmlnLmFzcCA9IDF9CnBsb3RfVV9mdW5fcHJvcChzdmQ0XzQ5LCAiY2hpbGRyZW5fY29tYl9jaGFyIiwgdHJhbnNwb3NlID0gVFJVRSwgZWZhX2NvbG9ycyA9IFRSVUUsCiAgICAgICAgICAgICAgICBtb2RlcyA9IGMoIm1vZGVfMDEiLCAibW9kZV8wMiIpKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IENoaWxkcmVuLCA0LTl5IChBcHByb2FjaCAjNCkiLAogICAgICAgc3VidGl0bGUgPSAiVTogQ2FwYWNpdGllcyBpbiBNb2RlcyAxICYgMiIsCiAgICAgICB4ID0gIk1vZGUgMSIsIHkgPSAiTW9kZSAyIikKCnBsb3RfVV9mdW5fcHJvcChzdmQ0XzQ5LCAiY2hpbGRyZW5fY29tYl9jaGFyIiwgdHJhbnNwb3NlID0gVFJVRSwgZWZhX2NvbG9ycyA9IFRSVUUsCiAgICAgICAgICAgICAgICBtb2RlcyA9IGMoIm1vZGVfMDEiLCAibW9kZV8wMyIpKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IENoaWxkcmVuLCA0LTl5IChBcHByb2FjaCAjNCkiLAogICAgICAgc3VidGl0bGUgPSAiVTogQ2FwYWNpdGllcyBpbiBNb2RlcyAxICYgMyIsCiAgICAgICB4ID0gIk1vZGUgMSIsIHkgPSAiTW9kZSAzIikKCnBsb3RfVV9mdW5fcHJvcChzdmQ0XzQ5LCAiY2hpbGRyZW5fY29tYl9jaGFyIiwgdHJhbnNwb3NlID0gVFJVRSwgZWZhX2NvbG9ycyA9IFRSVUUsCiAgICAgICAgICAgICAgICBtb2RlcyA9IGMoIm1vZGVfMDIiLCAibW9kZV8wMyIpKSArCiAgbGFicyh0aXRsZSA9ICJTVkQ6IENoaWxkcmVuLCA0LTl5IChBcHByb2FjaCAjNCkiLAogICAgICAgc3VidGl0bGUgPSAiVTogQ2FwYWNpdGllcyBpbiBNb2RlcyAyICYgMyIsCiAgICAgICB4ID0gIk1vZGUgMiIsIHkgPSAiTW9kZSAzIikKYGBgCgo=